无法设置 UIView 的 backgroundColor,它是 Swift 中 UIScrollView 的子视图

Posted

技术标签:

【中文标题】无法设置 UIView 的 backgroundColor,它是 Swift 中 UIScrollView 的子视图【英文标题】:Cannot set backgroundColor of UIView which is a subview of UIScrollView in Swift 【发布时间】:2016-11-02 08:56:37 【问题描述】:

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

我在 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' 上。

【问题讨论】:

在 "let colorView = UIView.init()" 时,您正在初始化的视图的位置和大小是多少?我认为这可能是问题所在。您的视图未添加到滚动视图中 不是CGFloat(arc4random() % 256) / 255.0 有什么问题,而是,你可以用.redColor() 测试吗? ...你确定限制是正确的吗?我想这是这两件事之一,而不是无法设置背景颜色……我看不到高度限制。 @Nitesh Kumar Singh 谢谢。我使用 SnapKit 来设置colorView 的约束。我很确定它已添加到scrollView @Magoo 我也尝试过使用UIColor.red。我还是有这个问题。 【参考方案1】:

您是否可能需要添加make.height.equalTo(scrollView)...我没有看到高度限制...

【讨论】:

感谢您的回答。但是我有这行代码make.top.bottom.equalTo(scrollView),它会自动将高度设置为等于scrollView 你是对的。我将make.top.bottom.equalTo(scrollView) 更改为make.top.height.equalTo(scrollView),问题就解决了。 SnapKit 的Robert Payne 指出“滚动视图中的右和下属性用于使滚动边界起作用”。 没问题,约束可以像那样有趣。我有一个类似的图书馆,我发现这样的事情发生了很多。

以上是关于无法设置 UIView 的 backgroundColor,它是 Swift 中 UIScrollView 的子视图的主要内容,如果未能解决你的问题,请参考以下文章

无法从 Controller 设置 UIView 背景颜色

UIView.animate() 无法为视图设置动画的各种原因都有哪些?

无法设置 UIView 的 backgroundColor,它是 Swift 中 UIScrollView 的子视图

为啥我的 CAShapeLayer 无法使用 UIView(带 gif)正确设置动画?

Playground,无法将同一个 UIImageView 设置为多个 UIView

圆角矩形框绘制-iOS