来自 Android 开发,我试图模仿我在过去的应用程序中所做的一些布局,但现在是在 iPhone 和 iPad 上。我在 Android 中经常使用的东西是布局权重。我已经进行了大量的搜索、阅读书籍、博客,并且我认为在 iOS 6 中可以实现类似的功能,但我找不到任何东西。我也试过在 iOS 中观看大量关于自动布局的教程,但我真的没有找到任何可以完成我的任务的东西。这让我发疯了。那么......是否有相当于Android布局权重的iOS?
3 回答
“布局权重”是 iOS 6 的自动布局框架可以做的一个子集。不幸的是,在 nib 文件中设置约束在 XCode 4 中是一件痛苦的事。我建议仅当您有权访问 XCode 5 开发预览时才在 nib 中设置约束。
但是,您提到的场景完全可以在没有自动布局的情况下完成:
如果我想要两个视图,顶视图将是一个“设置”高度(200),然后我想要另一个视图来占用剩余的可用空间。我可以在界面生成器中这样做吗?
是的你可以。只需转到尺寸检查器并将顶视图的弹簧和支柱设置为
和底部的
(注意红叉。)
更新:
好的,如果你真的想使用自动布局:
UIView *topView = ...;
UIView *bottomView = ...;
NSDictionary *bindings = NSDictionaryOfVariableBindings(topView, bottomView);
[self.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[topView(200)][bottomView]|"
options:(NSLayoutFormatAlignAllLeft | NSLayoutFormatAlignAllRight)
metrics:nil
views:bindings]];
您可能可以使用 iOS 中的自动布局系统来模拟这种行为。但是请注意,这需要 iOS 6.0+。这不存在这么久的原因是它在 iOS 平台上没有意义(所有设备上的所有比率都相同)。使用NSLayoutConstraint
您可以尝试将视图的宽度/高度限制为其父视图的一定百分比。不过,我从来没有尝试过自己做。然而,学习自动布局将需要一些时间投入(没什么特别的,可能一两个小时)。我推荐各种关于它的 WWDC 视频。
我不知道它是否会完全按照我描述的那样工作,但如果可能的话,您无疑会使用其中之一,或者在调整视图大小或其布局无效时手动NSLayoutConstraint
覆盖您的自定义视图来执行您的布局逻辑。layoutSubviews
此方法适用于所有 iOS 版本,但需要编写更多代码。