В экземплярах UITextField используются настройки «по умолчанию». Они автоматически расширяются на основе ввода пользователем. Мы хотели бы установить их на большую начальную ширину, чтобы они не увеличивали свою ширину. Каков правильный способ сделать это при сохранении «адаптивного» макета? Или это просто противоречит лучшим практикам iOS, и мы должны оставить его как есть?iOS: Правильный способ установки или увеличения ширины текстового поля
ответ
Для определения размера представлен вид в 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
По умолчанию текстовое поле имеет динамическую ширину и может быть адаптировано к раскадровке, в чем проблема? – Tj3n
Стандартный текст, который пользователи вводят в эти текстовые поля, примерно на 25% больше, чем размер исходного текстового поля. Поэтому я хотел бы увеличить начальную ширину, чтобы пользователям не приходилось видеть эффект расширения текстового поля. –
Вы имеете в виду высоту? ширина может быть установлена при любом значении initialy is not it – Tj3n