NSLayoutConstraint 用于在 UITableView 上查看

NSLayoutConstraint for view on UITableView

我有一个 UIViewController 和一个 UITableView 以及一个位于 UITableView 上方但与屏幕底部对齐的 UIView。问题是当用户正在进行 phone 呼叫时,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

想通了。

下面是对我有用的:

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];