Swift UITextField: создание динамически уменьшающегося фрейма UITextField в авторазметке - PullRequest
0 голосов
/ 11 ноября 2018

Я использую Custom Cell в UITableView. И основная модель ячейки выглядит следующим образом.

enter image description here

Я хотел бы, чтобы пунктирная линия динамически деформировалась в соответствии с размером поля «Имя меню» в этой ячейке. Поэтому я написал следующий код:

menuField.frame.size.width = getWidth(text: menuField.text!)
            menuField.layoutIfNeeded()
            dotLine.layoutIfNeeded()

func getWidth(text: String) -> CGFloat {
        let txtField = UITextField(frame: .zero)
        txtField.text = text
        txtField.sizeToFit()
        return txtField.frame.size.width
    }

Это сработало очень хорошо. Только увеличьте, если только! Если рамка имени меню уменьшается ниже текущего установленного размера, размер остается неизменным.

enter image description here

Как вы можете видеть на изображении выше, мне нужно увеличить не только размер пунктирной линии, но и усадку. Я не знаю, в чем моя проблема. Пожалуйста, помогите мне!

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Я решил свою проблему. Сначала я добавил ограничение ширины для текстового поля меню и импортировал его в переменную IBOutlet.

@IBOutlet weak var menuWidth: NSLayoutConstraint!

И я изменил значение переменной в соответствии с длиной текста.

menuWidth.constant = getWidth(text: menuField.text!)

Этот метод еще не полностью функционален. Но это работает так, как я хочу.

Также спасибо Роберту Дреслеру, который ответил мне :) Спасибо!

0 голосов
/ 11 ноября 2018

Вам не нужен код, который вы написали, autolayout сделает это за вас. Просто установите autolayout так:

Тире это ограничение с вашим значением

- MenuTextField - Пунктирная линия - Цена -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...