2015-07-02 6 views
-3

У меня есть 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, тогда все время высота представления остается такой же, как и в этом состоянии.

Я не использую автоспуск. Но я использовал авторезистентность. Пожалуйста, может кто-нибудь сказать мне, что я делаю неправильно?

+0

Как вы не можете использовать автозапуск, когда вы использовали ограничения в раскадровке? o_O Ограничения, поддерживаемые только в режиме автоспуска! – arturdev

+0

Я имел в виду автоматизацию. – JMS

+2

Вы не можете напрямую изменить ширину высоты. Вы должны изменить рамку просмотра с обновленной высотой –

ответ

0

попробуйте изменить self.updatesView.frame.height.

1

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

self.heightConstraint.constant = XXXX; 
0

Попробуйте изменить вид с видом в setNeedsLayout и layoutIfNeeded методов вместе взятых.

Вызовите этот метод, когда вы обновляете высоту представления.

Смежные вопросы