Вы также могли бы хотеть смотреть на libtap, среда тестирования C, которая производит Тест что-либо протокол (TAP) и таким образом интегрируется хорошо со множеством инструментов, выступающих в поддержку этой технологии. Это главным образом используется в динамическом мире языка, но это просто в использовании и становящееся очень популярный.
пример:
#include
int main () {
plan(5);
ok(3 == 3);
is("fnord", "eek", "two different strings not that way?");
ok(3 <= 8732, "%d <= %d", 3, 8732);
like("fnord", "f(yes|no)r*[a-f]$");
cmp_ok(3, ">=", 10);
done_testing();
}
Вот код, который я использую для этого. Он работает как амулет для одного типа клеток. В нем могут быть полезные части для вашего приложения.
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath {
AppAppDelegate *appDelegate = (AppAppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *Text = ([[appDelegate.myTextSectionsDelegateDict objectAtIndex:indexPath.section] objectForKey:@"Text"]);
UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17.0];
CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
CGSize labelSize = [Text sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
return labelSize.height + 15;}
Используете ли вы при создании ячейки тот же шрифт, что и для измерения?
Я использовал руководство на этой странице , и все работало для мне. Вам тоже может пригодиться:
Похоже, вы поняли, что использовали неправильный размер текста. Вы можете просто использовать свойства метки font
и lineBreakMode
, чтобы избежать этой проблемы в будущем, особенно если вы измените их в ячейке позже. Кроме того, для удобства чтения я бы не прибавлял высоту перед возвратом числа. Вместо этого я бы попробовал что-то вроде этого:
CGSize textSize = CGSizeMake( 300.0, 1979 );
CGSize size = [ myTextString1 sizeWithFont:[[ cell textLabel ] font ]
constrainedToSize:textSize
lineBreakMode:[[ cell textLabel ] lineBreakMode ]];
result = MAX( size.height + 30, 44.0f );
Я использовал 1979, потому что, согласно документации, нельзя возвращать значения больше 2009 года.