UITableView tableFooterView странное изменение размера - PullRequest
5 голосов
/ 19 июля 2010

Я хочу отобразить 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);

Однакоэтот код не работает.Ширина кнопки слишком велика, она равна 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];

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

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

Ответы [ 2 ]

19 голосов
/ 19 июля 2010

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

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

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

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

3 голосов
/ 31 июля 2012

Есть способ, с которым я столкнулся, пытаясь преодолеть эту проблему;

Создайте пустой UIView 320x (высота вашей кнопки), а затем поместите кнопку по центру внутри этого содержащего вида. Таким образом, кнопка внутри вида не изменяется.

Надеюсь, это поможет,

Jonathan

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...