如何以编程方式在表视图页脚中设置UIView的约束?

时间:2015-07-03 10:29:29

标签: ios objective-c uitableview uiview nslayoutconstraint

我正在创建一个自定义视图,例如

UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,40,0)];

并将其分配到表格视图的页脚,例如

self.tableView.tableFooterView = footerView;

当我用框架设置它时我真的没有问题,但我想这样做,我想以编程方式设置它。所以我正在做的是,

现在我已经改为

[self.tableView.tableFooterView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_tableView]|" options:0 metrics:nil views:dict]];

[self.tableView.tableFooterView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_tableView]|" options:0 metrics:nil views:dict]];

但这是我的应用程序崩溃,任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

您无需为表视图的页脚视图设置相对于表视图的约束。页脚视图的定位由表视图本身管理(尽管您可以在页脚视图内添加约束,即页脚视图及其子视图)。您想要返回的是页脚视图的高度。

//Put this in your viewDidLoad
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,40)];
self.tableView.tableFooterView = footerView;

高级

如果您的页脚视图根据让我们在页脚视图中显示标签或其他视图而动态调整大小。然后你可以为你的页脚视图子类化UIView并覆盖它的内部内容大小方法以返回页脚视图的实际高度,然后返回self.tableView.footerView.intrinsicContentSize.height

希望这会对你有所帮助。