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/
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];
我有一个 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/
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];