ios - 顶部和底部布局指南的自动布局问题

标签 ios autolayout nslayoutconstraint

我在从我的 View 和 controller.topLayoutGuide 和 controller.bottomLayoutGuide 中以编程方式设置 NSLayoutconstraints 时遇到了一些问题。

在 viewDidLoad 中使用此代码:

_mainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_mainView];
[self.view removeConstraints:self.view.constraints];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_mainView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
id top = self.topLayoutGuide;
id bottom = self.bottomLayoutGuide;
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[top]-0-[_mainView]-0-[bottom]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(top, _mainView, bottom)]];
[self.view layoutSubviews];

结果是:

http://i61.tinypic.com/2h34shh.png

(_mainView 有深灰色背景色)

如果我设置了相对于它工作的父 View 的约束:

_mainView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_mainView];
[self.view removeConstraints:self.view.constraints];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[_mainView]-0-|" options:NSLayoutFormatAlignAllBaseline metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[_mainView]-0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_mainView)]];
[self.view layoutSubviews];

http://i62.tinypic.com/24ouiop.png

我的错误在哪里? View Controller 层次结构是 uitabbarcontroller -> uinavigationController -> myViewController


已解决!

错误是:

[self.view removeConstraints:self.view.constraints];

我更改了代码

for(NSLayoutConstraint *c in self.view.constraints)
    if(c.firstItem == _mainView || c.secondItem == _mainView)
       [self.view removeConstraint:c];

它奏效了。 不管怎么说,还是要谢谢你! ;)

最佳答案

检查 self.topLayoutGuide 和 self.bottomLayoutGuide 是否不为零。您可能忘记在 Interface Builder 中设置 socket 。

关于ios - 顶部和底部布局指南的自动布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23006226/

相关文章:

ios - 如何计算从具有自动布局纵横比约束的 xib 加载的 UICollectionViewCell 的大小?

ios - 在导航栏标题的 View 上自动布局

ios - 随着内容的增加,努力调整单元格高度

ios - Swift 错误域=NSURLErrorDomain 代码=-999 "cancelled"

ios - UITableView 自动调整大小行约束在 iPhone 6Plus 上神秘地打破

objective-c - 如何使用自动布局在 iOS 11 中将 UITextField 添加到具有灵活宽度的 UIToolbar

ios - NSLayoutConstraint 在 ios 10.0 或更低版本中无法正常工作,但在 11.0 中可以正常工作

ios - 从 PubNub 消息中检索内容

ios - 如何定义我自己的自定义 UIColor?

ios - Xcode 6 Auto Layout - 所有设备上的 UI 元素之间保持恒定的水平间距