2011-02-01 3 views
4

У меня есть UITableView и Cell, которые я разрабатываю с помощью Interface Builder. У меня есть две метки. Проблема заключается в том, что одним из меток является текст, который может составлять 500 слов или 10 слов.iPhone -> высота динамических ячеек

Поэтому мне нужна динамическая высота ячейки. Как я могу справиться с этим, потому что в противном случае у меня пустое пространство или высота ячейки недостаточно.

Возможно, у кого-то есть идея, как это сделать?

С наилучшими пожеланиями.

ответ

5

Чтобы узнать размер вашего текста, вы можете использовать этот метод:

- (CGFloat)measureTextHeight:(NSString*)text fontName:(NSString*)fontName fontSize:(CGFloat)fontSize constrainedToSize:(CGSize)constrainedToSize { 
CGSize mTempSize = [text sizeWithFont:[UIFont fontWithName:fontName size:fontSize] constrainedToSize:constrainedToSize lineBreakMode:UILineBreakModeWordWrap]; 
return mTempSize.height; } 

Затем вы можете установить размер ячейки с:

-(CGFloat)tableView:(UITableVIew*)tableView heightForRowAtIndexPath(NSIndexPath *)indexPath; 
+0

Хм, невозможно ли читать все значения из поле UILabel? потому что, если я изменю размер, я также должен изменить его здесь, и что такое 'constrainedToSize'? – Tim

+0

constrainedToSize - это ширина вашего экрана (или вашего UILabel, если он не соответствует ширине экрана). –

+1

А, ладно, это работает, но где и как я могу изменить размер UILabel? – Tim

2
-(CGFloat)tableView:(UITableVIew*) tableView heightForRowAtIndexPath(NSIndexPath *) indexPath 
{ 
    //here u can check the row number and ur labels and return ur custom height. 
} 
+0

Да, это ясно, но как я могу проверить эти высоты ярлыков? Поскольку я определяю его в IB с помощью, например, 40px, это размер исправления. Поэтому, если я попрошу высоту надписей, я получаю всегда 40px. – Tim

+0

хороший вопрос ... у меня нет никаких хороших идей ... только уродливый, который может подсчитать символы и угадать, основываясь на ур-шрифте, какова будет его высота: S – Ratinho

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