У меня есть UIView
, называемый updateView, который является подзором основного вида. Исходя из некоторых условий, высота представления изменяется. Но высота просмотра меняется только один раз. В следующий раз, когда я меняю его, он отображает предыдущую высоту.Высота UIView не изменяется
- (void)viewWillAppear:(BOOL)animated
{
if (userLoggedIn)
[self resetSubviews];
else
[self setupSubviews];
}
-(void)resetSubviews
{
CGRect updateFrame = self.updatesView.frame;
updateFrame.size.height =self.notificationContainerView.frame.size.height - self.headerView.frame.size.height;
self.updatesView.frame = updateFrame;
}
- (void)setupSubviews
{
CGRect updateFrame = self.updatesView.frame;
updateFrame.size.height = self.notificationContainerView.frame.size.height - self.tabView.frame.size.height - self.buttonsView.frame.size.height - kHomeTabbarHeight - 5;
self.updatesView.frame = updateFrame;
}
Предположим сначала при запуске приложения userIsLoggedIn, то выполняется первое условие. Теперь, если я выхожу из системы (в другом UIViewController
) и вернусь, выполняется условие else, но при отображении высоты не изменяется.
Аналогично, при запуске приложения, если выполняется условие else, тогда все время высота представления остается такой же, как и в этом состоянии.
Я не использую автоспуск. Но я использовал авторезистентность. Пожалуйста, может кто-нибудь сказать мне, что я делаю неправильно?
Как вы не можете использовать автозапуск, когда вы использовали ограничения в раскадровке? o_O Ограничения, поддерживаемые только в режиме автоспуска! – arturdev
Я имел в виду автоматизацию. – JMS
Вы не можете напрямую изменить ширину высоты. Вы должны изменить рамку просмотра с обновленной высотой –