如何在Swift中将图片添加到ScrollView

3

我在Xcode中开发一个应用程序,并添加了一个ScrollView。现在我在一行中添加了一些小图片。

let myImages = ["BallBeispielBlau.png","BallBeispielRot.png","BallBeispielGelb.png","BallBeispielBlau.png","BallBeispielRot.png","BallBeispielGelb.png","BallBeispielBlau.png","BallBeispielRot.png","BallBeispielGelb.png"]
    let imageWidth:CGFloat = 66
    let imageHeight:CGFloat = 66
    var xPosition:CGFloat = 0
    var scrollViewSize:CGFloat=0

    for image in myImages {
        let myImage:UIImage = UIImage(named: image)!
        let myImageView:UIImageView = UIImageView()
        myImageView.image = myImage

        let LongTapGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "InfosZuEinemEvent:")
        LongTapGestureRecognizer.minimumPressDuration = 1.0;
        myImageView.addGestureRecognizer(LongTapGestureRecognizer)
        myImageView.userInteractionEnabled = true

        myImageView.frame.size.width = imageWidth
        myImageView.frame.size.height = imageHeight
        myImageView.frame.origin.x = xPosition
        myImageView.frame.origin.y = 0

        ScrollViewFreunde.addSubview(myImageView)
        ScrollViewFreunde.showsHorizontalScrollIndicator = false
        xPosition += imageWidth
        scrollViewSize += imageWidth
    }
    ScrollViewFreunde.contentSize = CGSize(width: scrollViewSize, height: imageHeight)

这样做没问题,但我想让第六张图片(即在第五张图片后面的图片)显示在第一张图片下面,也就是第二行。我用if语句尝试了一下,但不起作用。希望你能帮助我。

enter image description here

谢谢帮忙。


请添加您尝试的if语句代码,以便我们告诉您如何修复它。否则,您应该考虑使用UICollectionView。它是专门用于此目的构建的。 - Craig Siemens
看一下这个,它会帮助你:http://stackoverflow.com/questions/24056219/multiple-image-in-scrollview/24056398#24056398 - Anbu.Karthik
3个回答

2

你应该使用集合视图来完成这个功能。它非常简单,而且能够更好地以矩阵形式显示项目。

但是,为了回答你的问题...

你可以创建一个“yPosition”变量,每当一张图片溢出scrollView可见框架时,它会逐个增加imageHeight。

当这种情况发生时,xPositions将重置为0。

var yPosition = 0

for image in myImages {
    let myImage:UIImage = UIImage(named: image)!
    let myImageView:UIImageView = UIImageView()
    myImageView.image = myImage

    let LongTapGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "InfosZuEinemEvent:")
    LongTapGestureRecognizer.minimumPressDuration = 1.0;
    myImageView.addGestureRecognizer(LongTapGestureRecognizer)
    myImageView.userInteractionEnabled = true

    myImageView.frame.size.width = imageWidth
    myImageView.frame.size.height = imageHeight
    myImageView.frame.origin.x = xPosition
    myImageView.frame.origin.y = yPosition

    ScrollViewFreunde.addSubview(myImageView)
    ScrollViewFreunde.showsHorizontalScrollIndicator = false
    xPosition += imageWidth

    if xPosition + imageWidth >= view.frame.width {
        xPosition = 0
        yPosition += imageHeight
    }
    scrollViewSize += imageWidth
}

1
你应该优先选择使用collectionview而不是scrollview。这只是一个建议。

0
我为此编写了一个堆栈视图,您可以在以下链接下载示例项目:

https://github.com/mcmatan/StackViewWithAutoLayout

很简单,只需调用“addSubviewWithLayout”并添加您的视图即可。 堆栈视图将管理滚动内容大小。 您可以调用“removeViewWithLayout”从堆栈中删除视图。

干杯


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接