Итак, я делаю приложение с помощью iOS 6 и задаюсь вопросом, почему мой код, который отлично работал на iOS 5, больше не работает. У меня есть ячейка с динамическим UILabel, который настраивается на основе текста, который он несет.UILabel sizeToFit работает только с отключением AutoLayout
Это с autolayout включен:
Это с autolayout выключен:
Вот мой код:
- (CGFloat)heightForText:(NSString *)bodyText
{
#define FONT_SIZE 13.0f
#define CELL_CONTENT_WIDTH 280.0f
#define CELL_CONTENT_MARGIN 5.0f
CGSize constraintSize = CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f);
CGSize labelSize = [bodyText sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping];
CGFloat height = MAX(labelSize.height, 36.0f);
// NSLog(@"height=%f", height);
return height + (CELL_CONTENT_MARGIN * 2);
}
- (CGFloat)tableView:(UITableView *)tv heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSInteger section = [indexPath section];
switch (section) {
case 0:
if ([self.text.text length]!=0)
{
return [self heightForText:self.text.text];
}
else if ([self.link.text length]!=0)
{
return 60.0f;
}
}
автозапуск с комбинацией панели меню -> Редактор -> Размер, соответствующий содержанию и/или «приоритету обхода содержимого» в «инспекторе размеров» внутри Утилитов (без другого кода для самого ярлыка) не работает? – blub
если нет: используйте розетки для ширины и высоты, например http://stackoverflow.com/questions/13105544/auto-sizing-uilabel-when-using-autolayout – blub
Я не знаю, как использовать розетки для ограничения веса по высоте, как указано в этот вопрос. – kratos