Подтвердить что ты не робот

Установка рамки UIView не работает

У меня проблема с свойством frame в iOS 7. Я хочу изменить размеры UIView в методе viewDidLoad моего UIViewController, но если я сделаю это как int screenHeight = [[UIScreen mainScreen] bounds].size.height; [self.leftSideTableView setFrame: CGRectMake(0, 0, 320, screenHeight)]; высота устанавливается так, как я хочу, до конца метода, но в любом другом методе она такая же, как и раньше!

Что не так с этим, или это просто ошибка компилятора или что-то еще?

4b9b3361

Ответ 1

Нужно поместить изменение размера изображения в -viewDidLayoutSubviews:! (документация)

Изменение размеров рамок представления в -viewWillAppear: или -viewDidLoad: не будет работать, поскольку представления еще не выкладываются!

Ответ 2

  • Проверьте, используете ли вы autolayout в xib файле. Если вы не хотите использовать autolayout, снимите флажок в файле xib.

  • Измените кадр self.leftSideTableView в -viewWillAppear:.

Ответ 3

Убедитесь, что автоматический макет не активирован в вашем файле раскадровки.

Чтобы отключить его, посмотрите на инспектор в построителе интерфейса. Щелкните значок, который выглядит как страница целиком слева. В разделе "Документ конструктора интерфейсов" снимите флажок "Использовать автоматический макет".

Я нахожу это лучше всего для контроллера представления в IB с автоматической компоновкой или полностью в коде. Смешивание двух может привести к странному поведению, которое трудно отлаживать.

Ответ 4

Есть несколько причин, почему это может произойти. Прежде всего, вам нужно убедиться, что ваше табличное представление не ноль. Если вы создаете его программно, вы должны быть уверены, что вы вызываете alloc/init где-нибудь, прежде чем пытаться установить фрейм. Если self.leftSideTableView является IBOutlet, это может быть вызвано тем, что не запустили связь между выходом и интерфейсом.

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