Я следующие настройкиНеправильный размер этикетки на viewWillAppear
- XIB файл, который имеет только вид ландшафта. Этот вид является подключением к моему контроллеру.
- На этом изображении есть метка, которая подключена к
IBOutlet UILabel* label
- Эта метка сконфигурирована следующим образом (она занимает всю ширину экрана).
- Я переопределил viewWillAppear и сделаю это (чтобы получить размер метки).
-(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; CGRect rect = _labelTitleLand.frame; }
Странная вещь (которую я не понимаю). То, что он возвращает size = (ширина 768, высота 21), когда он запускается в портрете (на iPad), что является правильным.
И он возвращает размер = (ширина 741 высота 21), когда он запускается в ландшафте. Что странно. Я ожидал, что он вернет ширину 1024, высота 21 для пейзажа.
У меня было впечатление, что в момент просмотраWillAppear все размеры элементов управления уже рассчитаны.
Update 1
Если я проверить labelTitleLand.frame на viewDidAppear, то он возвращает правильные результаты. Однако мне это не нравится, потому что я хочу сделать некоторые действия (на основе этого размера), которые влияют на то, как будет отображаться представление. В случае, если я сделаю это на viewDidAppear, как я понимаю, будет видимая перерисовка.
Попробуйте использовать _labelTitleLand.bounds и посмотрите, работает ли это. – rdelmar
@rdelmar: Он возвращает тот же результат –