iOS: 设置或增加文本字段宽度的正确方法
iOS: Correct method to set or increase text field width
我们的 UITextField 实例正在使用 "default" 设置。它们会根据用户输入自动扩展。我们想将它们设置为更大的初始宽度,这样它们就不必增加宽度。在保持 'adaptive' 布局的同时执行此操作的正确方法是什么?或者这是否与 iOS 最佳实践相反,我们应该保持原样?
要确定视图的大小,自动布局使用两种方法:
- (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 and intrisic content size 具有不同的值,您可以大声为约束和 intrisicContentSize 设置优先级。
在您的情况下,您可以将水平轴设置为 low priority for contentHuggingPriorityForAxis for horizontal axis. Set middle priority for width constraint. Set Hight priority for contentCompressionResistancePriorityForAxis。
之后,如果文本小于宽度约束,则 textField 的宽度将与宽度约束的常量相同。然后文本将具有比约束更大的宽度,textField 将超出宽度约束。
我还建议您为最大宽度和 required priority
添加带有“<=”关系的约束
我们的 UITextField 实例正在使用 "default" 设置。它们会根据用户输入自动扩展。我们想将它们设置为更大的初始宽度,这样它们就不必增加宽度。在保持 'adaptive' 布局的同时执行此操作的正确方法是什么?或者这是否与 iOS 最佳实践相反,我们应该保持原样?
要确定视图的大小,自动布局使用两种方法:
- (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 and intrisic content size 具有不同的值,您可以大声为约束和 intrisicContentSize 设置优先级。
在您的情况下,您可以将水平轴设置为 low priority for contentHuggingPriorityForAxis for horizontal axis. Set middle priority for width constraint. Set Hight priority for contentCompressionResistancePriorityForAxis。 之后,如果文本小于宽度约束,则 textField 的宽度将与宽度约束的常量相同。然后文本将具有比约束更大的宽度,textField 将超出宽度约束。 我还建议您为最大宽度和 required priority
添加带有“<=”关系的约束