什么是iOS相当于Android布局权重?

时间:2013-08-19 04:34:45

标签: android ios

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

3 个答案:

答案 0 :(得分:2)

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

选择分布=填充相等(类似于重量)

示例:enter image description here

答案 1 :(得分:1)

“布局权重”是iOS 6的自动布局框架可以执行的操作的子集。不幸的是,在nib文件中设置约束是XCode 4中的一个难点。我建议只有在你有权访问XCode 5 dev预览时才能在nib中设置约束。

但是,您提到的场景可以在没有自动布局的情况下完成:

  

如果我想要两个视图,顶视图将是“设置”高度,该怎么办?   (200)然后我想要另一种观点来占据其余部分   可用空间。我可以在界面构建器中执行此操作吗?

是的,你可以。只需转到尺寸检查器并将顶视图的弹簧和支柱设置为 enter image description here

和底部的

enter image description here

(注意红色十字架。)

<强>更新

好的,如果你真的想使用autolayout:

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]];

答案 2 :(得分:0)

您可以使用iOS中的自动布局系统模拟此行为。但请注意,这需要iOS 6.0+。这种情况长期存在的原因是它在iOS平台上没有意义(所有设备上的所有比率都相同)。使用NSLayoutConstraint,您可以尝试将视图的宽度/高度限制为其超级视图的特定百分比。不过,我自己从未尝试过这样做。然而,学习自动布局需要一点时间投入(没有极端,可能是一两个小时)。我建议各种WWDC视频。

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