如何在Interface Builder中为UITextField设置自适应最大宽度约束?
在Interface Builder中实现UITextField的自适应居中布局需求
你之前的问题出在约束优先级没调整,还缺了关键的水平居中约束,按下面步骤操作就能解决:
先设置基础边距约束:
给UITextField添加leading到安全区域/父视图的边距=23、trailing到安全区域/父视图的边距=23这两个约束,然后选中这两个约束,在属性面板里把它们的优先级改成990(默认是1000,得给最大宽度约束留优先级空间)。同时别忘了加垂直方向约束(比如top间距),固定文本框的垂直位置。添加最大宽度约束:
给UITextField添宽度≤580的约束,这个约束的优先级保持默认的1000(最高优先级)。补充水平居中约束:
最后给UITextField加一个水平居中对齐到父视图/安全区域的约束,优先级同样设为1000。
逻辑说明
当设备宽度小于580时,文本框按边距23计算的宽度(屏幕宽-46)必然小于580,最大宽度约束不会触发,低优先级的边距约束生效,文本框自适应拉伸;当设备宽度大于580时,最高优先级的最大宽度约束会强制文本框宽度不超过580,同时水平居中约束让它在父视图中间,这时候边距23的约束因为优先级低会被自动忽略,不会导致过度拉伸。
内容的提问来源于stack exchange,提问作者Michael Okoli
相关产品推荐
相关产品推荐

