UIView的宽度不会根据约束而改变

时间:2015-03-02 18:12:51

标签: ios swift uiview

我有一个UIView,我正在绘制并将子视图添加到另一个UIView。

它充当分隔符,因此它需要高1px以及要添加它的视图的宽度。

这是我到目前为止的代码:

 var underline = UIView()
 underline.frame = CGRectMake(0, 37, backgroundSection.bounds.size.width, 1)
 underline.backgroundColor = UIColor.whiteColor()
 backgroundSection.addSubview(underline)

这并没有将UIView的宽度绘制为与backgroundSection相同的宽度。这将其绘制为与约束调整视图大小之前backgroundSection在IB上的外观相同的宽度。

我可以将backgroundSection的clipToBounds设置为true,但我在backgroundSection上有一个阴影,如果它被设置为true,它将被删除。

我该如何解决这个问题。

谢谢, 亚历

1 个答案:

答案 0 :(得分:1)

使用约束时,不应使用框架设置。自动布局将为您完成所有帧设置。

相反,您需要为视图添加约束:

var underline = UIView()
backgroundSection.addSubview(underline)

// These two lines will add horizontal and vertical constraints pinning the underline view to backgroundSection's edges
backgroundSection.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: nil, metrics: nil, views: ["view": underline]))
backgroundSection.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|[view]|", options: nil, metrics: nil, views: ["view": underline]))