以编程方式从superview中删除UIView(自动布局)

时间:2014-05-31 14:55:20

标签: ios objective-c uitableview uiview autolayout

我有一个UIViewController,其中包含主UIView,其内部是一个小UIView位于顶部,UITableView填充了剩余的空间。

所有的设计都是通过Storyboard和autolayout完成的,所以基本上有UIView的上限:

  • 顶部空间= 0px到superview
  • 前导空格= 0px到superview
  • 尾随空格= 0 px superview
  • 高度= 44px

这些适用于UITableView

  • 顶部空间= 0px至UIView
  • 底部空间= 0px到superview
  • 前导空格= 0px到superview
  • 尾随空格= 0 px superview

使用不同的屏幕尺寸或方向时,一切正常并正确调整大小。我现在要做的是以编程方式删除顶部UIView,然后我希望UITableView将空格填充到超级视图的顶部。

我知道我可以通过编程方式为UITableView创建一个新约束,但我要找的是低优先级约束?已经在故事板中定义,可以与之前定义的那些共存。

任何其他技巧或解决方法也会受到赞赏,唯一的限制是所有内容都应该在Storyboard中设计,并且一切都应该在调用之后工作:

[view removeFromSuperview];

这是设计:

screenshot

3 个答案:

答案 0 :(得分:0)

从您的超级视图中删除顶视图后,只需更新tableview的框架以填充整个窗口

答案 1 :(得分:0)

您只需要添加另一个顶部约束,一个到顶部布局指南,然后将其编辑为优先级为900,常量值为0.如果您已经有顶视图,那么您将需要必须从左下角拖动到左侧列表中的主视图,因为您将无法访问画布中的主视图。

答案 2 :(得分:0)

非常简单,因为您已经对顶视图和表视图之间的顶级UIView和垂直空间约束进行了高度约束。

在各自的实现(.m)类中创建高度约束的实例。

@property(强,非原子)IBOutlet NSLayoutConstraint * topViewHeightConstraint

然后当你不想要顶视图时,写上topViewHeightConstraint.constant = 0.f

由于您已在顶视图和表视图之间建立了垂直空间约束,因此表视图将占用整个超视图空间。

如果您想再次查看顶视图,只需设置约束值。