检测视图已成功更新帧

时间:2016-06-17 09:57:35

标签: ios objective-c uibutton

我在UIButton中有一个UIView,我使用UIButton(instancetype)initWithFrame:(CGRect)frame {内以编程方式设置了PureLayout的约束宽度,如

self.errorButtonConstraintWidth = [self.btnError autoSetDimension:ALDimensionWidth toSize:5];
self.errorButtonConstraintWidth.constant = 40;
NSLog(@"afterChangeContraintWith = %f",self.btnError.frame.size.width);

但是在设置约束后,打印按钮框的Log始终打印0.我认为在更改约束后,框架不会立即更新。
如何检测我的视图何时成功更新?

我想检测我的视图何时成功更新的原因是因为我希望在将按钮宽度更改为40之后在中心水平和UIButton下方显示下拉列表

1 个答案:

答案 0 :(得分:1)

不会立即设置框架,它将在下一个布局过程中设置。

但你可以这样做

方法1

override func layoutSubviews() {
    super.layoutSubviews()

    // in this method, the frame has been set.
}

方法2

// This will force autolayout to determine the frame
// without waiting for the next layouting schedule
self.layoutIfNeeded()