了解layoutSubviews不同的行为

时间:2017-10-26 14:30:51

标签: swift autolayout uistackview cornerradius layoutsubviews

我有两组按钮。

它们应该具有不同屏幕尺寸的圆形。

所以我写道:

override func layoutSubviews() {
    submitButton.layer.cornerRadius = updateButton.bounds.size.height / 2
    cancelButton.layer.cornerRadius = cancelButton.bounds.size.height / 2
}

这适用于imageBelow

enter image description here

然而,当我在之前或之后添加super.layoutSubviews()时,它只会给出这样的非舍入式:

enter image description here

仅供参考这两个按钮位于水平stackView内。

然后我有另一个屏幕,如果我不添加super.layoutSubviews(),那么该按钮将没有圆形的部分。

enter image description here

FYI此按钮不在stackView内。它有top,bottom和centerX约束。

所以基本上在一个视图中使用super.layoutSubviews()将帮助您创建圆形的视图,在另一个视图中它会阻碍它!!

这些按钮的设置为:

btn.clipsToBounds = true
btn.layer.borderWidth = 1.0
btn.layer.borderColor = Constants.Color.CoolBlue.color().cgColor
btn.contentEdgeInsets.top = 15
btn.contentEdgeInsets.bottom = 10
btn.translatesAutoresizingMaskIntoConstraints = false

这是因为stackViews还是别的什么?为什么表现得像这样?

我已经阅读了What is the correct way to call [super layoutSubviews]?,并尝试在我的代码之前和之后编写super.layoutSubviews(),但这没有帮助。

0 个答案:

没有答案