2014-11-22 7 views
0

Я хотел бы поймать высоту UILabel под названием descriptionText. Я могу записать его с помощью кода ниже, но проблема в том, что это не те данные, которые я хочу. Это только размер базовой метки с 1 строкой, а текст имеет 3 (или более) строки. Я использую автоматический макет, и он работает, я могу отображать текст с динамической высотой, но мне нужно знать его реальную высоту из-за другой ошибки.Получить динамическую высоту UILabel

Вот моя попытка, которая дает основную высоту метки:

- (void)viewDidLoad { 

     [super viewDidLoad]; 
     NSLog(@" description height = %f", self.descriptionText.frame.size.height); 
} 

Можно ли получить каким-то образом реальную высоту UILabel, которая была оказана на экране?

В качестве альтернативы я мог рассчитать желаемые значения со счетчиком строк.

+0

Где вы звоните? – sha

+0

@sha извините, я забыл об этом. Я использую его в viewDidLoad – rihe

+1

Проверьте размер метки в 'viewWillAppear:'. – rmaddy

ответ

2

Как вы, вероятно, понимаете, что viewDidLoad не подходит для ввода журнала. ViewDidLoad вызывается после того, как представление загружается в память, но макет еще не выполнен, поэтому рамка ваших ярлыков отражает то, что изначально было установлено в раскадровке файл.

Если вы хотите проверить рамки после завершения макета, вам необходимо переопределить viewDidLayoutSubviews, который будет вызываться после завершения компоновки и установки всех кадров.

Смежные вопросы