NSLayoutConstraint 用于 UITableView 上的视图
Posted
技术标签:
【中文标题】NSLayoutConstraint 用于 UITableView 上的视图【英文标题】:NSLayoutConstraint for view on UITableView 【发布时间】:2015-02-21 21:36:45 【问题描述】:我有一个UIViewController
和一个UITableView
以及一个在UITableView
上方但与屏幕底部对齐的UIView
。问题是当用户打电话时,frame
设置不起作用,UIView
被推到屏幕下方(所以它被稍微覆盖了。我试图将UIView
对齐到视图底部,根本没有让它对齐。我的约束定义如下:
[self.view addSubview:self.signupView];
[self.view addSubview:self.tableView];
[self.view bringSubviewToFront:self.signupView];
NSArray *v = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_signupView(70)]-0-|"
options:NSLayoutFormatAlignAllBaseline
metrics:nil
views:NSDictionaryOfVariableBindings(_signupView)];
NSArray *h = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_signupView]|"
options:NSLayoutFormatAlignAllBottom
metrics:nil
views:NSDictionaryOfVariableBindings(_signupView)];
[self.view addConstraints:h];
[self.view addConstraints:v];
signupView
的高度是 70,它应该正好在屏幕底部与整个屏幕的宽度对齐。上面的代码是将视图放在视图的顶部。我在这里缺少什么吗?为什么它不像我上面所说的那样与底部对齐?我试图阅读以下内容:
http://commandshift.co.uk/blog/2013/01/31/visual-format-language-for-autolayout/
http://makeapppie.com/2014/07/26/the-swift-swift-tutorial-how-to-use-uiviews-with-auto-layout-programmatically/
Use autolayout to set dynamic UIView to match container view
【问题讨论】:
【参考方案1】:想通了。
这是对我有用的以下内容:
NSArray *v = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_signupView(70)]-0-|"
options:NSLayoutFormatAlignAllBaseline
metrics:nil
views:NSDictionaryOfVariableBindings(_signupView)];
NSArray *h = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_signupView]|"
options:NSLayoutFormatAlignAllBottom
metrics:nil
views:NSDictionaryOfVariableBindings(_signupView)];
[self.view addConstraints:h];
[self.view addConstraints:v];
【讨论】:
以上是关于NSLayoutConstraint 用于 UITableView 上的视图的主要内容,如果未能解决你的问题,请参考以下文章
获取 NSLayoutConstraint 标识符不适用于 topAnchor
@IBDesignable , NSLayoutConstraint 用于超级视图的比例乘数宽度?
NSLayoutConstraint 用于 UITableView 上的视图
NSLayoutConstraint 用于代码中未知数量的子视图