Я хочу отобразиться, 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];
Это работает, кнопка имеет корректную ширину.
Однако я не понимаю, почему первый пример кода не работает. Кто-либо может объяснить?
Независимо от того, какую ширину вы установили для представления, которое вы добавляете в качестве нижнего колонтитула / заголовка UITableView
, его ширина всегда будет такой же, как ширина таблицы.
Итак, в вашем случае размер добавленного представления изменяется до CGRectMake (0, 0, 320, 50)
, но кнопка остается с правильным фреймом. Рамка кнопки соответствует виду ...
РЕДАКТИРОВАТЬ :
Единственный параметр в фрейме нижнего колонтитула / заголовка, который остается, как вы его установили, - это высота.
Обратите внимание , что если вы измените высоту представления верхнего / нижнего колонтитула после того, как он был добавлен в таблицу, он не внесет никаких изменений. Вы должны установить высоту перед добавлением в таблицу ...