UIView的高度没有变化

时间:2015-07-02 11:35:17

标签: ios objective-c iphone 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条件,但显示高度时不会改变。

同样,最初在运行app时,如果执行了else条件,那么整个视图高度保持与该条件中设置的相同。

我没有使用自动布局。但我使用过autoresizing。请有人能告诉我我做错了什么吗?

3 个答案:

答案 0 :(得分:2)

请使用自动布局。为视图定义高度约束,为此约束创建属性并更改值。

self.heightConstraint.constant = XXXX;

答案 1 :(得分:0)

尝试更改self.updatesView.frame.height。

答案 2 :(得分:0)

尝试使用查看setNeedsLayout更改您的观点    和layoutIfNeeded方法相结合。

更新视图的高度时,请调用这些方法。