无法设置UIView的背景颜色,它是Swift中UIScrollView的子视图

问题描述:

我尝试将一些UIView对象作为子视图添加到UIScrollView并为它们指定随机颜色。但是这些UIView对象的backgroundColor是白色的。为什么我不能设置他们的backgroundColor?无法设置UIView的背景颜色,它是Swift中UIScrollView的子视图

我在iOS 10.1,Swift 3.0.1和SnapKit 3.0.2上运行这个项目。下面是代码viewDidLoad

let scrollView = UIScrollView.init() 
scrollView.isPagingEnabled = true 

self.view.addSubview(scrollView) 
scrollView.snp.makeConstraints { (make) in 
    make.left.right.top.bottom.equalTo(self.view) 
} 

var lastView: UIView? = nil 
for i in 0 ..< 5 { 
    let colorView = UIView.init() 
    let red = CGFloat(arc4random() % 256)/255.0 
    let blue = CGFloat(arc4random() % 256)/255.0 
    let green = CGFloat(arc4random() % 256)/255.0 
    colorView.backgroundColor = UIColor.init(red: red, green: green, blue: blue, alpha: 1.0) 
    scrollView.addSubview(colorView) 

    colorView.snp.makeConstraints({ (make) in 
     make.top.bottom.equalTo(scrollView) 
     make.width.equalTo(scrollView) 

     if i == 0 { 
      make.left.equalTo(scrollView) 
     } 
     else { 
      make.left.equalTo((lastView?.snp.right)!) 
     } 

     if i == 4 { 
      make.right.equalTo(scrollView) 
     } 
    }) 
    lastView = colorView 
} 

我认为问题是,scrollViewbackgroundColor将覆盖在'colorView”。

+0

什么是来看你是初始化时的位置和大小“让colorView = UIView.init()” ? 我认为这可能是问题所在。你的视图没有被添加到滚动视图 –

+0

不是说'CGFloat(arc4random()%256)/ 255.0'有什么问题,但是你可以用'.redColor()'来测试吗? ...你确定这些约束是正确的吗?我会想象这是两件事之一,而不是能够设置颜色...我看不到高度限制。 – Magoo

+0

@Nitesh库马尔辛格谢谢。我使用SnapKit来设置'colorView'的约束。我很确定它被添加到'scrollView'中。 – songlebao

你可能需要添加make.height.equalTo(scrollView) ...我没有看到一个高度约束...

+0

感谢您的回答。但我有这行代码'make.top.bottom.equalTo(scrollView)'它会自动设置高度等于scrollView – songlebao

+0

你是对的。我将'make.top.bottom.equalTo(scrollView)'改为'make.top.height.equalTo(scrollView)',问题就解决了。 SnapKit的[Robert Payne](https://github.com/robertjpayne)指出:“滚动视图中的右侧和底部属性是为了让滚动界限起作用”。 – songlebao

+0

没问题,约束可以这样搞笑。我有一个类似的库,我发现这样的事情发生了很多。 – Magoo