EDIT:
После того, как я возился с этим в течение нескольких дней, у меня возникли следующие вопросы:
1. UITableView занимает весь вид?
2. Если это так, как он устанавливает границы ячеек так, чтобы они выглядели так, как будто они занимают только часть вида.
3. Как я могу получить границы ячеек или, точнее, как узнать границы видимой области, которую занимают клетки. self.tableView.bounds.size.width не помогает, потому что он возвращает ширину представления.
Благодарю.
Оставьте предыдущую информацию ниже, если она поможет прояснить мой вопрос.
Может ли это быть возможно?
Я читал яблочные документы и проверял форумы здесь и в других местах и не могу найти и ответить на это.
Действительно ли нижний колонтитул в UITableVIew занимает весь просмотр независимо от того, что вы делаете? Разве у него нет понятия ширины стола?
Пример:
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section {
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
[footerView setBackgroundColor:[UIColor redColor]];
return footerView;
}
Этот код создаст красную линию от одного края к другому. Независимо от того, какие границы вы дадите, линия займет весь вид. Проблема в том, что если вы хотите центрировать метку в нижнем колонтитуле, у вас нет никакого способа узнать, где находится центр, если вы поддерживаете изменения ориентации.
Например, в приложении для iPad я пытаюсь сделать следующее:
if ([footerText length] > 0) {
UIView *customView = [[[UIView alloc]initWithFrame:CGRectMake(0.0, 0.0, 0, 0.0)] autorelease];
[customView setBackgroundColor:[UIColor grayColor]];
UILabel *footerLabel = [[UILabel alloc] initWithFrame:CGRectZero];
footerLabel.numberOfLines = 2;
footerLabel.adjustsFontSizeToFitWidth = NO;
[footerLabel setTextAlignment:UITextAlignmentCenter];
[footerLabel setBackgroundColor:[UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:0.5]];
[footerLabel setOpaque:NO];
[footerLabel setTextColor:[UIColor whiteColor]];
[footerLabel setShadowColor:[UIColor lightGrayColor]];
[footerLabel setFont:[UIFont boldSystemFontOfSize:14]];
[footerLabel setFrame:CGRectMake(customView.center.x/0.3, 0.0, 600, 40.0)];
[footerLabel setText:footerText];
[customView addSubview:footerLabel];
[footerLabel release];
NSLog(@"customView width = %f", customView.frame.size.width);
NSLog(@"tableview width = %f", self.tableView.frame.size.width);
NSLog(@"tableview center = %f", self.tableView.center.x);
return customView;
} else {
return nil;
}
Центр таблицы в портретной ориентации должен быть 384 (это в подробном представлении / справа) и 351,5 в альбомной ориентации. Но когда я использую setCenter или пытаюсь отрегулировать левый край на основе этого центра, он не центрируется.
Последний вопрос: как можно центрировать пользовательское представление в нижнем колонтитуле с поддержкой ориентации, когда, кажется, что нижний колонтитул не имеет понятия границ таблицы? Я должен что-то упустить в документах, потому что это должна быть проблема, решаемая кем-то другим, но я не могу найти это.
Спасибо за ваше время.