Обнаружение просмотра успешно обновило фрейм

У меня есть 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. Я думаю, что после изменения ограничения с рамкой не обновлять сразу.
Как я могу определить, успешно ли обновился мой вид?

Причина, по которой я хочу определить, когда мой вид обновился успешно, потому что я хочу отобразить выпадающий список по центру и ниже UIButton после изменения ширины кнопки до 40

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()
Другие вопросы по тегам