无法设置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
}
我认为问题是,scrollView
的backgroundColor
将覆盖在'colorView”。
你可能需要添加make.height.equalTo(scrollView)
...我没有看到一个高度约束...
感谢您的回答。但我有这行代码'make.top.bottom.equalTo(scrollView)'它会自动设置高度等于scrollView – songlebao
你是对的。我将'make.top.bottom.equalTo(scrollView)'改为'make.top.height.equalTo(scrollView)',问题就解决了。 SnapKit的[Robert Payne](https://github.com/robertjpayne)指出:“滚动视图中的右侧和底部属性是为了让滚动界限起作用”。 – songlebao
没问题,约束可以这样搞笑。我有一个类似的库,我发现这样的事情发生了很多。 – Magoo
什么是来看你是初始化时的位置和大小“让colorView = UIView.init()” ? 我认为这可能是问题所在。你的视图没有被添加到滚动视图 –
不是说'CGFloat(arc4random()%256)/ 255.0'有什么问题,但是你可以用'.redColor()'来测试吗? ...你确定这些约束是正确的吗?我会想象这是两件事之一,而不是能够设置颜色...我看不到高度限制。 – Magoo
@Nitesh库马尔辛格谢谢。我使用SnapKit来设置'colorView'的约束。我很确定它被添加到'scrollView'中。 – songlebao