UITableView имеет пользовательский заголовок UIView , который содержит UILabel. Так как в таблице также есть индекс раздела с правой стороны, я хочу расположить метку в оставшемся месте.
Проблема в том, как «центрировать» метку таким же образом, когда устройство повернуто в горизонтальное положение! Я пробовал и Interface Builder, и только код, и что-то всегда не так.
Ограничения:
- Метка максимально узкая
- Метка не должна быть изменена
- Метка всегда должна быть в центре ширины таблицы минус индекс секции
Одним из простых способов исправить это было бы отключение представления заголовка раздела от правой части tableView. Пытался это сделать, не получилось. Вот код из viewForHeaderInSection :
CGRect frame = CGRectMake(0, 0, tableView.bounds.size.width - 32, 50.0f);
// MAGIC 32 for SectionIndexTitles
UIView *view = [[[UIView alloc] initWithFrame:frame] autorelease];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.font = [UIFont fontWithName:@"Courier" size:20];
label.text = @"Section title long";
label.textAlignment = UITextAlignmentCenter;
label.backgroundColor = [UIColor redColor];
CGSize labelSize = [label.text sizeWithFont:label.font
constrainedToSize:frame.size
lineBreakMode:UILineBreakModeClip];
label.frame = CGRectMake(0, 0, labelSize.width, labelSize.height);
label.center = CGPointMake(frame.size.width/2.0f, kHeaderHeight/2.0f);
label.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
Любые идеи приветствуются! Даже не могу вспомнить, сколько разных способов мне не удалось:)