【问题标题】:Add views horizontally to UIScrollView programmatically以编程方式将视图水平添加到 UIScrollView
【发布时间】:2021-01-06 07:22:25
【问题描述】:

我正在尝试将三个相同的图像视图堆叠在一起。图像比屏幕大,我希望能够向右滚动,如果我走到最后,就会看到图像重复三遍。这些视图不断堆叠在彼此之上,而不是彼此相邻。我无法弄清楚我做错了什么。任何帮助将不胜感激。

这是我的代码:

func stackThreeImagesHorizontallyToScrollView(imageToStack :UIImage, scrollView: UIScrollView){
           
    var previousAnchor = scrollView.contentLayoutGuide.leadingAnchor

    for i in 0 ..< 3 {
        let imageViewToStack = UIImageView(image: imageToStack)
        
        switch i {
                    case 0:
                        imageViewToStack.backgroundColor = UIColor.green
                        break
                    case 1:
                        imageViewToStack.backgroundColor = UIColor.purple
                        break
                    case 2:
                        imageViewToStack.backgroundColor = UIColor.yellow
                        break

                    default: break

                    }
        
        scrollView.addSubview(imageViewToStack)

        NSLayoutConstraint.activate([
            imageViewToStack.leadingAnchor.constraint(equalTo: previousAnchor, constant: 0),
            imageViewToStack.heightAnchor.constraint(equalToConstant: imageToStack.size.height),
            imageViewToStack.widthAnchor.constraint(equalToConstant: imageToStack.size.width),
            imageViewToStack.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 0),
            imageViewToStack.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0),
            imageViewToStack.trailingAnchor.constraint(equalTo: imageViewToStack.leadingAnchor, constant: imageToStack.size.width)
        ])
        
        previousAnchor = imageViewToStack.trailingAnchor
    }
    
    previousAnchor.constraint(equalTo: scrollView.trailingAnchor, constant: 0).isActive = true
    
}

【问题讨论】:

    标签: swift uiscrollview constraints


    【解决方案1】:

    您忘记将imageViewToStacktranslatesAutoresizingMaskIntoConstraints 属性设置为false

    func stackThreeImagesHorizontallyToScrollView(imageToStack: UIImage, scrollView: UIScrollView) {
    
            var previousAnchor = scrollView.contentLayoutGuide.leadingAnchor
    
            for i in 0 ..< 3 {
                let imageViewToStack = UIImageView(image: imageToStack)
    
                /// ADD THIS LINE
                imageViewToStack.translatesAutoresizingMaskIntoConstraints = false
    
                switch i {
                case 0:
                    imageViewToStack.backgroundColor = UIColor.green
                    break
                case 1:
                    imageViewToStack.backgroundColor = UIColor.purple
                    break
                case 2:
                    imageViewToStack.backgroundColor = UIColor.yellow
                    break
    
                default: break
    
                }
    
                scrollView.addSubview(imageViewToStack)
    
                NSLayoutConstraint.activate([
                    imageViewToStack.leadingAnchor.constraint(equalTo: previousAnchor, constant: 0),
                    imageViewToStack.heightAnchor.constraint(equalToConstant: imageToStack.size.height),
                    imageViewToStack.widthAnchor.constraint(equalToConstant: imageToStack.size.width),
                    imageViewToStack.topAnchor.constraint(equalTo: scrollView.topAnchor, constant: 0),
                    imageViewToStack.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: 0),
                    imageViewToStack.trailingAnchor.constraint(equalTo: imageViewToStack.leadingAnchor, constant: imageToStack.size.width)
                ])
    
                previousAnchor = imageViewToStack.trailingAnchor
            }
    
            previousAnchor.constraint(equalTo: scrollView.trailingAnchor, constant: 0).isActive = true
    
        }
    

    【讨论】:

      猜你喜欢
      • 2017-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-29
      • 2017-12-26
      • 2017-10-09
      • 1970-01-01
      • 2012-06-03
      相关资源
      最近更新 更多