UITableView自动布局灵活高度

时间:2014-07-16 12:43:35

标签: ios objective-c uitableview autolayout

我有以下设计。 enter image description here

使用AutoLayout让每件事情变得灵活。在此设计中,我有一个UIView,其颜色为灰色,在图片中显示,UITableViewUIView下方。有时我必须显示此UIView,有时我必须隐藏此灰色UIView

我的问题是,当我隐藏UIView时,UITableView没有修复它的高度。我不想在.m文件中硬编码。有可能AutoLayout处理这个问题。我有这些约束如下图所示。我错过了任何约束。

enter image description here

当我尝试更改UIView高度时,UITableView没有向上移动并显示一些橙色约束,如图中所示。 enter image description here

1 个答案:

答案 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中看到的“橙色约束”是正常的:它表示视图框架与您设置的约束不匹配。然后,您可以更新框架以遵守约束,或更新约束以匹配框架。