如何在 xcode IB 中使常数值自适应
how to make a constant value adaptive in xcode IB
以下图为例,顶部红色矩形的宽度固定为200,底部红色矩形的宽度限制为屏幕宽度的一半。我需要的是根据屏幕尺寸调整 200 的大小。这里,常量可以是固定的宽度/高度,或者水平/垂直space。
我可以通过@"H:[redView(%d)]"、@"V:[redView(%d)]" 以编程方式执行此操作,我可以计算自适应宽度和高度。有时候布局比较复杂,用编程的方式来布局太繁琐了。
所以我的问题是如何在 IB 中执行此操作
类似问题:
(1) @"H:|-5-[view]-5-|",我需要 5 适应不同的设备
(2) @"H:|[view(100)]|", 我需要 100 自适应
(3) @"H:|[v1]-0-[v2]-0-[v3]|", 我需要 v1 : v2 : v3 = 3: 5 : 2
IB里面的东西是怎么弄的,有什么答案会很有帮助,谢谢大家
我现在有办法了,我可以在代码中把需要自适应的约束从IB中拖到IBOutlet中,然后通过编程方式赋值,这样大部分事情都可以在IB中完成。但是还是不智能,有没有智能的
你可以得到像下面这样的屏幕宽度
CGFloat width = [UIScreen mainScreen].bounds.size.width;
然后设置框架。例如
yourUIView.frame = CGRectMake(x coordinate, y coordinate, width, height);
对于您的红色框,控制从红色框拖动到它的包含视图(这可以在文档大纲视图中轻松完成)。从弹出窗口中选择等宽和等高约束。将乘数编辑为百分比(例如 0.6 表示 60%)。
以类似的方式,您可以使用带乘数的等宽来解决其他 3 种情况:
(1) 添加一个约束,使您的视图在其包含视图中水平居中,然后使视图占其包含视图宽度的 97%。
(2) 使用等宽,乘数为 0.3。
(3) 使用等宽使 v1 为 v2 的 0.6,v3 为 v2 的 0.4。将 v1 固定到偏移量为 0 的超级视图的前缘。将 v1 固定到偏移量为 0 的 v2。将 v2 固定到偏移量为 0 的 v3。将 v3 后缘固定到偏移量为 0 的超级视图。
以下图为例,顶部红色矩形的宽度固定为200,底部红色矩形的宽度限制为屏幕宽度的一半。我需要的是根据屏幕尺寸调整 200 的大小。这里,常量可以是固定的宽度/高度,或者水平/垂直space。
我可以通过@"H:[redView(%d)]"、@"V:[redView(%d)]" 以编程方式执行此操作,我可以计算自适应宽度和高度。有时候布局比较复杂,用编程的方式来布局太繁琐了。
所以我的问题是如何在 IB 中执行此操作
类似问题:
(1) @"H:|-5-[view]-5-|",我需要 5 适应不同的设备
(2) @"H:|[view(100)]|", 我需要 100 自适应
(3) @"H:|[v1]-0-[v2]-0-[v3]|", 我需要 v1 : v2 : v3 = 3: 5 : 2
IB里面的东西是怎么弄的,有什么答案会很有帮助,谢谢大家
我现在有办法了,我可以在代码中把需要自适应的约束从IB中拖到IBOutlet中,然后通过编程方式赋值,这样大部分事情都可以在IB中完成。但是还是不智能,有没有智能的
你可以得到像下面这样的屏幕宽度
CGFloat width = [UIScreen mainScreen].bounds.size.width;
然后设置框架。例如
yourUIView.frame = CGRectMake(x coordinate, y coordinate, width, height);
对于您的红色框,控制从红色框拖动到它的包含视图(这可以在文档大纲视图中轻松完成)。从弹出窗口中选择等宽和等高约束。将乘数编辑为百分比(例如 0.6 表示 60%)。
以类似的方式,您可以使用带乘数的等宽来解决其他 3 种情况:
(1) 添加一个约束,使您的视图在其包含视图中水平居中,然后使视图占其包含视图宽度的 97%。
(2) 使用等宽,乘数为 0.3。
(3) 使用等宽使 v1 为 v2 的 0.6,v3 为 v2 的 0.4。将 v1 固定到偏移量为 0 的超级视图的前缘。将 v1 固定到偏移量为 0 的 v2。将 v2 固定到偏移量为 0 的 v3。将 v3 后缘固定到偏移量为 0 的超级视图。