以下图为例,顶部红色矩形的宽度固定为200,底部红色矩形的宽度约束为屏幕宽度的一半。我需要的是根据屏幕尺寸调整200的大小。这里,常数可以是固定的宽度/高度,或水平/垂直空间。
我可以通过@“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中完成。但它仍然不聪明,是否有一个聪明的人。
答案 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.