如何在xcode IB中使自适应值自适应

时间:2015-01-28 08:12:27

标签: ios xcode autolayout autoresize

以下图为例,顶部红色矩形的宽度固定为200,底部红色矩形的宽度约束为屏幕宽度的一半。我需要的是根据屏幕尺寸调整200的大小。这里,常数可以是固定的宽度/高度,或水平/垂直空间。

example image

我可以通过@“H:[redView(%d)]”,@“V:[redView(%d)]”以编程方式执行此操作,我可以计算自适应宽度和高度。有时,当布局复杂时,以编程方式进行布局太繁琐了。

所以我的问题是在IB中如何做到这一点

类似问题:

(1)@“H:| -5- [view] -5- |”,我需要5个在不同的设备上进行adpative

(2)@“H:| [view(100)] |”,我需要100才能自适应

(3)@“H:| [v1] -0- [v2] -0- [v3] |”,我需要v1:v2:v3 = 3:5:2

如何做IB中的事情,任何答案都会有很大的帮助,谢谢你们

我现在有一个解决方案,我可以将需要从IB自适应的约束拖到代码中的IBOutlet,然后以编程方式分配它,这样,大部分事情都可以在IB中完成。但它仍然不聪明,是否有一个聪明的人。

2 个答案:

答案 0 :(得分:0)

您可以获得如下屏幕宽度

CGFloat width = [UIScreen mainScreen].bounds.size.width;

然后设置框架。例如

yourUIView.frame = CGRectMake(x coordinate, y coordinate, width, height);

答案 1 :(得分:0)

对于您的红色框,控制从红色框拖动到其包含视图(这可以在文档大纲视图中轻松完成)。从弹出窗口中选择Equal Widths和Equal Heights约束。将乘数编辑为百分比(例如0.6为60%)。

以类似的方式,您可以使用等宽度和乘数来解决其他3种情况:

(1)添加一个约束以使视图在其包含视图中水平居中,然后使视图占其视图宽度的97%。

(2)使用乘数为0.3的等宽。

(3)使用等宽度使v1的v1为0.6,v2的v3为0.4。将v1引脚连接至超视距的前沿,偏移为0.引脚v1至v2,偏移0.引脚v2至v3,偏移0.引脚v3后沿至超视距,偏移为0.