UITableView tableFooterView странное изменение размеров

Я хочу отобразиться, UIButton в Нижнем колонтитуле UITableView (должно быть точно то же для заголовка).

Этот код находится в viewDidLoad моего TableViewController:

UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[footerShareButton setFrame:CGRectMake(10, 0, 70, 50)];
NSLog(@"%f", footerShareButton.frame.size.width);

[self.tableView setTableFooterView:footerShareButton];

NSLog(@"%f", footerShareButton.frame.size.width);
NSLog(@"%f", self.tableView.tableFooterView.frame.size.width);

Однако этот код не работает. Кнопка width является слишком большой, это 320. (Высота корректна все же.) Первые выводы NSLog 70, второе и третий вывод 320. Таким образом, кажется, что setTableFooterView метод странно изменяет размер кнопки.

Я решил эту проблему путем помещения UIButton в другой UIView прежде, чем установить его как нижний колонтитул таблицы:

 UIButton *footerShareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 [footerShareButton setFrame:CGRectMake(10, 0, 70, 50)];

 UIView *aView = [[UIView alloc] initWithFrame:CGRectMake(10, 0, 70, 50)];
 [aView addSubview:footerShareButton];

 [self.tableView setTableFooterView:aView];
 [aView release];

Это работает, кнопка имеет корректную ширину.

Однако я не понимаю, почему первый пример кода не работает. Кто-либо может объяснить?

5
задан avf 19 July 2010 в 12:03
поделиться

1 ответ

Независимо от того, какую ширину вы установили для представления, которое вы добавляете в качестве нижнего колонтитула / заголовка UITableView , его ширина всегда будет такой же, как ширина таблицы.

Итак, в вашем случае размер добавленного представления изменяется до CGRectMake (0, 0, 320, 50) , но кнопка остается с правильным фреймом. Рамка кнопки соответствует виду ...

РЕДАКТИРОВАТЬ :
Единственный параметр в фрейме нижнего колонтитула / заголовка, который остается, как вы его установили, - это высота.

Обратите внимание , что если вы измените высоту представления верхнего / нижнего колонтитула после того, как он был добавлен в таблицу, он не внесет никаких изменений. Вы должны установить высоту перед добавлением в таблицу ...

19
ответ дан 18 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: