是否可以使用约束将视图高度指定为父视图的百分比,但还可以限制最大结果高度?

时间:2019-04-01 09:35:03

标签: ios xcode autolayout interface-builder

我是XCode的新手,并且已经使用界面生成器设置了视图控制器。根是设置为“对齐:填充和分布:按比例填充”的堆栈视图。

堆栈视图中的每个项目都固定到父堆栈视图,并且使用Superview.Height的乘数,使用约束条件将高度指定为堆栈视图(即整个屏幕)的百分比。

这部分效果很好,所有视图均缩放到所需的高度百分比,并且在iPhone 5s等设备上看起来不错。

但是,在XS Max之类的设备上,某些控件(例如文本字段)看起来太高了,内部的文本上下都留有太多空间(与文本字段矩形相比)。

理想的结果是所有视图随屏幕缩放,但如果分辨率和纵横比太大,则文本字段将保持较小,并为其他视图留出剩余空间。

我的第一个想法是在文本字段中添加第二个约束,其中将高度设置为小于或等于(例如)30,并结合现有的高度百分比。但是我已经尝试过了,尝试了不同的“优先级”值,但到目前为止还没有运气。

是否有任何方法可以在当前(平面)视图层次上使用约束和自动布局来获得所需的结果?

还是最好考虑添加嵌套堆栈视图并在嵌套堆栈视图上设置百分比高度约束,同时让内部的文本字段处理自己的高度?

建议表示赞赏!

1 个答案:

答案 0 :(得分:1)

Distribution: Fill Proportionally可能是堆栈视图中最容易被误解的属性,并且可能未执行预期的操作(或所需的操作)。

根据OP的评论...更改Distribution属性(我假设它已更改为Fill)解决了该问题。