0

我们的 UITextField 实例使用“默认”设置。它们会根据用户输入自动扩展。我们想将它们设置为更大的初始宽度,这样它们就不必增加它们的宽度。在保持“自适应”布局的同时执行此操作的正确方法是什么?或者这是否与 iOS 最佳实践相反,我们应该保持原样?

4

1 回答 1

0

要确定视图的大小,自动布局使用两种方法:

- (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

如果您有大小约束和具有不同值的intrisic 内容大小,您需要为约束和 intrisicContentSize 设置优先级。

在您的情况下,您可以将contentHuggingPriorityForAxis设置为水平轴的低优先级。为宽度约束设置中间优先级。为横轴设置contentCompressionResistancePriorityForAxis的Hight 优先级。之后,如果文本小于宽度约束,则 textField 的宽度将与宽度约束的常量相同。然后文本将具有比约束更大的宽度,文本字段将超出宽度约束。我还建议您为最大宽度和所需优先级添加具有“<=”关系的约束

于 2016-11-09T04:08:23.463 回答