由于我发现有时很难从故事板布局中获得我所期望的结果,因此我正在尝试一些程序限制......我知道从这里开始会更加困难 - 但希望“最终游戏”能够实现方法更加有效。 ;-)
当我在简单的 viewController & mainView & centerView 组合上使用以下代码时,一切都按预期进行,即 mainView 填充整个可用屏幕,而 centerView 仅填充 mainView 的中心部分:
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings(_centerView);
NSDictionary *metrics = @{@"padding":@15.0};
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-padding-[_centerView]-padding-|" options:0 metrics:metrics views:viewsDictionary]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-padding-[_centerView]-padding-|" options:0 metrics:metrics views:viewsDictionary]];
但是,如果我将相同的 viewController 作为 root 添加到 navigationController (或者定义一个不同的 VC 作为 root 并稍后推送我的),它不会按预期工作:导航栏下方的屏幕现在只是纯白色。
我对所有视图进行了着色,缺失的视图似乎从导航栏下方的左上角“闪耀”了一点。为什么导航控制器会“干扰”上述布局约束?我的印象是导航控制器的根视图控制器的主视图默认填充导航栏下方窗口的“剩余部分”。或者我错了,需要在导航和主视图之间添加约束?或者我还缺少其他东西吗?
有任何想法吗?
顺便说一句:如果有人知道一个好的教程或博客或其他来源来处理以编程方式组成屏幕和它们之间的导航(导航控制器、选项卡栏控制器、视图)和/或添加布局约束的问题,我也会非常感兴趣。
预先非常感谢。
好的,经过更多测试后,看来至少在我的情况下我不应该设置 view.translatesAutoresizingMaskIntoConstraints = NO;对于根视图。一旦我将其设置为“是”(仅适用于此视图),它就会再次起作用......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)