5

来自 Android 开发,我试图模仿我在过去的应用程序中所做的一些布局,但现在是在 iPhone 和 iPad 上。我在 Android 中经常使用的东西是布局权重。我已经进行了大量的搜索、阅读书籍、博客,并且我认为在 iOS 6 中可以实现类似的功能,但我找不到任何东西。我也试过在 iOS 中观看大量关于自动布局的教程,但我真的没有找到任何可以完成我的任务的东西。这让我发疯了。那么......是否有相当于Android布局权重的iOS?

4

3 回答 3

7

使用 StackView(类似于 Android 中的 LinearLayout)

选择分布 = 填充等式(类似于权重)

例子:在此处输入图像描述

于 2018-07-17T13:36:37.533 回答
1

“布局权重”是 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]];
于 2013-08-19T06:34:13.880 回答
0

您可能可以使用 iOS 中的自动布局系统来模拟这种行为。但是请注意,这需要 iOS 6.0+。这不存在这么久的原因是它在 iOS 平台上没有意义(所有设备上的所有比率都相同)。使用NSLayoutConstraint您可以尝试将视图的宽度/高度限制为其父视图的一定百分比。不过,我从来没有尝试过自己做。然而,学习自动布局将需要一些时间投入(没什么特别的,可能一两个小时)。我推荐各种关于它的 WWDC 视频。

我不知道它是否会完全按照我描述的那样工作,但如果可能的话,您无疑会使用其中之一,或者在调整视图大小或其布局无效时手动NSLayoutConstraint覆盖您的自定义视图来执行您的布局逻辑。layoutSubviews此方法适用于所有 iOS 版本,但需要编写更多代码。

于 2013-08-19T05:23:07.680 回答