我有以下设计。
使用AutoLayout
让每件事情变得灵活。在此设计中,我有一个UIView
,其颜色为灰色,在图片中显示,UITableView
在UIView
下方。有时我必须显示此UIView
,有时我必须隐藏此灰色UIView
。
我的问题是,当我隐藏UIView
时,UITableView
没有修复它的高度。我不想在.m文件中硬编码。有可能AutoLayout
处理这个问题。我有这些约束如下图所示。我错过了任何约束。
当我尝试更改UIView
高度时,UITableView没有向上移动并显示一些橙色约束,如图中所示。
答案 0 :(得分:1)
对比看起来不错。显示/隐藏灰色UIView
所需要做的就是更改高度约束常量。
要执行此操作,请在控制器中为约束创建IBOutlet
(您执行此操作的方式与UIView
IBOutlet
相同),并且当您要隐藏灰色视图时,将约束的constant
属性设置为0
。
例如
@interface MyViewController
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *greyViewHeightConstraint;
@end
当你想要隐藏视图时:
self.greyViewHeightConstraint.constant = 0;
要再次显示视图,您必须在加载故事板后保存“默认”常量值(例如在viewDidLoad
中),并将self.greyViewHeightConstraint.constant
设置为此保存值。< / p>
另请注意,这些约束更改can be animated。
您在Interface Builder中看到的“橙色约束”是正常的:它表示视图框架与您设置的约束不匹配。然后,您可以更新框架以遵守约束,或更新约束以匹配框架。