繁体   English   中英

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

[英]Autolayout issue with top & bottom layout guide

我在从视图和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具有深灰色背景色)

如果我设置了相对于超级视图的约束,那么它将起作用:

_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

我的错误在哪里? 视图控制器层次结构是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中设置插座。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM