2015-07-02 46 views
-3

我有一個UIView調用updatesView這是主視圖的子視圖。基於某些條件,視圖高度會發生變化。但視圖高度只更改一次。下一次當我改變它時,它會顯示之前的高度。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

嘗試改變與視圖的setNeedsLayoutlayoutIfNeeded方法相結合您的看法。

更新視圖高度時調用這些方法。