在viewDidLoad
中,我实例化UIView
并向该UIView添加渐变图层。
这适用于iPhone,但在iPad上,UIView
无法延伸以填满整个屏幕。请注意iPad sim的以下屏幕截图。
我尝试以编程方式和使用XCode添加约束。
似乎一旦我添加CAGradientLayer,UIView就不符合我设置的约束,无论是以编程方式还是使用XCode工具。
示例代码:
gradientLayer = CAGradientLayer()
gradientLayer.frame = self.view.bounds
gradientLayer.locations = [0.5, 1.0]
gradient_View.backgroundColor = UIColor.blueColor()
let color1 = self.opus_Page_Background_Color.CGColor as CGColorRef
let color4 = self.opus_Page_Tertiary_Color.CGColor as CGColorRef
gradientLayer.colors = [color1, color4]
self.gradient_View.frame = self.view.bounds
self.gradient_View.layer.insertSublayer(gradientLayer, atIndex: 0)
gradient_View.translatesAutoresizingMaskIntoConstraints = false
let leadingConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Leading, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 0)
leadingConstraint.active = true
view.addConstraint(leadingConstraint)
let trailingConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Trailing, multiplier: 1, constant: 0)
trailingConstraint.active = true
view.addConstraint(trailingConstraint)
let widthConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100)
view.addConstraint(widthConstraint)
let heightConstraint = NSLayoutConstraint(item: gradient_View, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 100)
view.addConstraint(heightConstraint)
NSLayoutConstraint.activateConstraints([leadingConstraint, trailingConstraint, widthConstraint, heightConstraint])
答案 0 :(得分:1)
您添加了前导和尾随约束,这意味着您已获得视图的宽度。所以根本不需要添加宽度约束。从故事板中删除宽度或以编程方式删除您正在使用的宽度。 我也可以看到一个缺失的顶级约束。解决这个问题
答案 1 :(得分:0)
尝试更改最后两个约束。而不是匹配宽度和高度,将其固定到Top&底部。问题可能是在viewDidLoad中,您的视图的宽度= X,高度= Y,但这不是最终布局。 如果这不起作用,请尝试在viewDidLayoutSubviews中添加它。
希望它有所帮助!