视图的框架被调用两次并导致裁剪错误

时间:2019-03-28 15:59:51

标签: ios swift layout uikit

我有一个基本的UIView,它的子视图具有visualEffectView。我将visualEffectView的view frame.height设置为80。向ViewController呈现时,我想将其高度重置为120。当前,呈现时,高度最初为120,但随后迅速回切为80。我的ViewController覆盖UIView中设置的框架?我的ViewController中的框架首先被调用,但是后来又从UIView中被调用,从而导致裁剪错误。

HomeController

2 个答案:

答案 0 :(得分:0)

尝试移动此代码

visualEffectView.anchor(top: topAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 80)

override func layoutSubviews() {override init(frame: CGRect) {

super.init()之后的

答案 1 :(得分:0)

您可能需要保护条件,如果有约束条件,只需通过。​​

    override func layoutSubviews() {
    super.layoutSubviews()

    guard visualEffectView.constraintsAffectingLayout(for: .vertical).count == 0 else  {return}. // Here

    visualEffectView.anchor(top: topAnchor, left: leftAnchor, bottom: nil, right: rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 80)
}