我们的UITextField实例正在使用“默认”设置。它们根据用户输入自动扩展。我们想将它们设置为更大的初始宽度,这样它们就不必增加它们的宽度。在保持“自适应”布局的同时,这样做的正确方法是什么?或者这与iOS最佳实践相反,我们应该保持原样?
答案 0 :(得分:0)
要确定视图的大小,autolayout使用两种方法:
- (CGSize)intrisicContentSize //with
- (UILayoutPriority)contentCompressionResistancePriorityForAxis:(UILayoutConstraintAxis)axis;
- (UILayoutPriority)contentHuggingPriorityForAxis:(UILayoutConstraintAxis)axis;
and
width and height constrtaints (size constraints)
//also the autolayot can use inner constraints, but here it is not important
如果您的大小constraints和intrisic content size具有不同的值,则会为约束和intrisicContentSize设置优先级。
在您的情况下,您可以为low priority设置横向轴contentHuggingPriorityForAxis。为宽度约束设置middle priority。为Hight priority设置水平轴contentCompressionResistancePriorityForAxis。 之后,如果文本小于宽度约束,则textField的宽度与宽度约束的常量相同。然后文本将具有更多宽度然后约束,textField将增长出宽度约束。 另外我建议您使用"< ="添加约束。最大宽度与required priority
的关系