Как изменить следующий фрагмент (в методе tableView: cellForRowAtIndexPath: UITableViewController) из рецепта "09a - PrefsTable" из главы 6 "Поваренной книги разработчиков iPhone":
if (row == 1) {
// Create a big word-wrapped UILabel
cell = [tableView dequeueReusableCellWithIdentifier:@"libertyCell"];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"libertyCell"] autorelease];
[cell addSubview:[[UILabel alloc] initWithFrame:CGRectMake(20.0f, 10.0f, 280.0f, 330.0f)]];
}
UILabel *sv = [[cell subviews] lastObject];
sv.text = @"When in the Course of human events, it becomes necessary for one people to dissolve the political bands which have connected them with another, and to assume among the powers of the earth, the separate and equal station to which the Laws of Nature and of Nature God entitle them, a decent respect to the opinions of mankind requires that they should declare the causes which impel them to the separation.";
sv.textAlignment = UITextAlignmentCenter;
sv.lineBreakMode = UILineBreakModeWordWrap;
sv.numberOfLines = 9999;
return cell;
}
... размер "sv" поднабора UILabel, а "ячейка" UITableViewCell будет иметь размер, достаточно большой, чтобы соответствовать тексту (и работать с более или менее текстом и другими типами выравнивания текста)? Я посмотрел на метод UILabel textRectForBounds: limitedToNumberOfLines:, но в документации указано, что его нельзя вызывать напрямую (и его следует переопределять). Я экспериментировал с методом UIView sizeToFit без успеха.
Обновление: Я задал новый вопрос о своей проблеме с методом NSString -sizeWithFont: forWidth: lineBreakMode:.