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

时间:2016-03-08 15:56:41

标签: ios swift image uiscrollview

我在Xcoode中开发了一个App,并添加了一个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

感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

您应该为此使用集合视图。以矩阵形式显示项目真的很简单,也更方便。

然而,要回答你的问题......

您可以创建一个“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 :(得分:0)

您应该更喜欢collectionview而不是scrollview。这只是一个建议。

答案 2 :(得分:0)

由于这个原因,我写了一个堆栈视图,您可以在以下位置下载示例项目:

https://github.com/mcmatan/StackViewWithAutoLayout

非常简单,只需拨打#34; addSubviewWithLayout"并添加您的视图。 堆栈视图将管理滚动内容大小。 你可以调用" removeViewWithLayout"从堆栈中删除视图。

干杯