Неоднозначный макет с UITextField в contentView статического UITableViewCell

Я пытаюсь добавить UITextFields в contentViews некоторых статических UITableViewCells. Если я просто добавлю их непосредственно в ячейки раскадровки, я получу несколько следующих предупреждений в Xcode 5:

Ambiguous Layout: Position is ambiguous for "Round Style Text Field".

Если я затем выберу UITextFields и выберу «Добавить отсутствующие ограничения» в раскадровке, вместо этого я получу это предупреждение:

Misplaced View: Frame for "Round Style Text Field" will be different at run time.

Кроме того, я попытался добавить ограничения между UITextField и contentView вручную (выбрав эти два представления и попытавшись добавить ограничение), но похоже, что ни один из параметров ограничения не доступен для этого конкретного отношения (все флажки инвалид)

Вот несколько скриншотов раскадровки: Static UITableViewCells с UITextFields в их contentView

Static UITableViewCells с UITextFields в их contentView, добавлены отсутствующие ограничения


person Jamie Forrest    schedule 30.09.2013    source источник


Ответы (2)


В панели контроллера представления слева от раскадровки будет желтый кружок со стрелкой Arrow, кликните по нему.

Затем в новой панели щелкните желтый треугольник с кружком посередине.

У вас должно получиться три варианта:

  1. Обновить рамку — это переместит элемент пользовательского интерфейса в соответствии с оранжевой пунктирной рамкой.
  2. Обновить ограничение — это обновит ограничения, чтобы они соответствовали текущему элементу пользовательского интерфейса.
  3. Сбросьте предлагаемые ограничения — Xcode сделает то, что считает правильным

В вашем случае ограничения обновления должны работать

person LanceJeffrey    schedule 01.10.2013
comment
Это устранило проблему неоднозначного макета, но не проблему неуместного представления. - person Jamie Forrest; 01.10.2013
comment
Чтобы исправить смещенный вид, откройте инспектор размеров для смещенного вида и измените значения прямоугольника рамки, чтобы они соответствовали ожидаемым значениям, указанным в предупреждении. - person Kamaros; 01.10.2013
comment
Что делать, если я не хочу, чтобы кадр соответствовал ожидаемым значениям? - person Jamie Forrest; 01.10.2013
comment
Прямо сейчас, когда вы запускаете свое приложение, кадры будут соответствовать ожидаемым значениям. Предупреждение в раскадровке просто сообщает вам, что то, что вы получите на симуляторе/устройстве, отличается от того, что отображается в раскадровке. Если вам нравится, где находится кадр на раскадровке, вам придется отредактировать свои ограничения, чтобы они соответствовали кадру. - person Kamaros; 01.10.2013

У меня были похожие проблемы - невозможность добавить («Pin») ограничения во встроенный UITextField, получать предупреждения об этом и т. д. OP не указал, но на снимке экрана видно, что стиль статического UITableViewCell установлен на один из предопределенные типы (в частности, "Левая деталь").

Я обнаружил, что установка в раскрывающемся списке «Стиль» ячейки представления таблицы значения «Пользовательский» волшебным образом позволит добавить ограничения в UITextField за счет необходимости заново создавать предварительно определенный стиль ячейки самостоятельно, например. добавление UILabel(s) и сопоставление их выравнивания с другими ячейками.

person mygzi    schedule 11.03.2014