2015-10-12 6 views
0

Так как название говорит, у меня есть UIButton, который дает свою длину как 0, когда я использую self.titleLabel.frame.size.width, однако, когда я приостанавливаю выполнение в той же строке, что и оператор журнала, который выводит это на консоль, и вместо этого распечатать объект, используя po self.titleLabel, он дает мою рамку как (24,5, 9; 190, 22,5), поэтому ширина 190, а не 0.UIButtonLabel Frame Width Wrong

Кто-нибудь знает, как и почему эти два значения будут отличаться от каждого Другие? И как я могу заставить свой код читать правильную ширину?

ответ

0

Итак, я понял ответ. После установки заголовка метки (фактически это происходит, когда представление загружено, так как оно все в раскадровке). AutoLayout не обновляет ширину представлений до следующего цикла рисования.

Итак, чтобы исправить это, я просто добавил [self.view setNeedsLayout], а затем [self.view layoutIfNeeded] прямо перед кодом, в котором мне нужна была ширина, чтобы заставить AutoLayout установить ширину моего представления, когда мне это нужно.

1

Вы используете автозапуск? autolayout помещает элементы и отслеживает ограничения после создания объекта (т. е. ViewDidLoad, когда вы получаете первые значения), и прежде чем вы получите возможность настроить макет с помощью метода, который вы переопределите.