我有一个名为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。请有人能告诉我我做错了什么吗?
答案 0 :(得分:2)
请使用自动布局。为视图定义高度约束,为此约束创建属性并更改值。
self.heightConstraint.constant = XXXX;
答案 1 :(得分:0)
尝试更改self.updatesView.frame.height。
答案 2 :(得分:0)
尝试使用查看setNeedsLayout
更改您的观点
和layoutIfNeeded
方法相结合。
更新视图的高度时,请调用这些方法。