У меня есть UITextField
с меткой рядом с ней, которая говорит «метр». Идея состоит в том, что вы можете ввести число в текстовое поле, а рядом с ним появится слово «метр». Текстовое поле не имеет границ, поэтому оно будет выглядеть как одна строка текста, когда вы не редактируете текстовое поле.Как настроить ширину UITextField для текста при вводе текста?
Для этого мне нужно, чтобы ширина текстового поля была шириной текста. Поэтому при вводе вам нужно шире. Однако это не происходит при вводе. Но если вы поворачиваете устройство, размер настраивается на содержимое. Поэтому в основном мне нужно запускать все триггеры, когда вы вращаетесь, чтобы получить то, что я хочу.
Я пробовал много вещей в методе UIControlEvents.editingChanged
как setNeedsLayout
, setNeedsDisplay
, layoutSubViews()
, setNeedsUpdateConstraints()
, но не повезло.
Другим подходом было использование sizeToFit()
, а затем установить ограничение frame.size.width
на ограничение ширины текстового поля. Это действительно работало, но только в первый раз, когда вы редактируете. Когда вы редактируете второй раз, sizeToFit()
всегда возвращает те же как-то.
Любые идеи?
Обновление: В результате я использовал другой подход. Я сделал текстовое поле полной шириной и поместил метку на верхнюю часть. Когда вы печатаете, он вычисляет ширину текста, а метка метра перемещается вправо соответственно, изменяя постоянную константы слева. Таким образом, метка всегда находится рядом с введенным номером.
Я до сих пор не нашел способ изменить ширину текстового поля при вводе без каких-либо ошибок, но мне это действительно не нужно.
Пожалуйста, проверьте http://stackoverflow.com/questions/18236661/resize-a-uitextfield-while-typing-by-using-autolayout Я думаю, что это тот же вопрос. –