2015-10-09 3 views
0

У меня есть UITableViewCell, у которого есть дочерний вид, а внутри него - изображение и метка. Я хочу использовать представление child как средство предоставления некоторого запаса по содержимому ячейки, тем самым давая мне поля внутри ячеек. Кажется, это было так, как многие люди в Интернете рекомендули это делать.Ограничения автоматической компоновки не работают как ожидалось

Я настроил свои ограничения, как показано ниже:

enter image description here

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

enter image description here

Я совершенно сбит с толку в этой точке. Я потратил два дня на чтение и попытался расставить простой UITableViewCell и, очевидно, не очень хорошо понимаю, как работает авто-макет.

Я даже просто положил все по предложенным границам (синие линии), а затем сказал раскадровке, чтобы создать предложенные ограничения. В этот момент содержимое ячейки просто отправлено с 50% ее с правой стороны экрана и не просматривается.

Так два вопроса:

Раскадровка чаще не показывает мне то, что не точно представлены на моем реальном устройстве. Является ли это довольно распространенным явлением в разработке iOS? Должен ли я вообще не полагаться на представление авто-макета раскадровки?

Что мне нужно сделать для этих ограничений, чтобы получить ячейки на макете на моем устройстве, как показано на моей раскадровке в это время? Какие ограничения я устанавливаю неправильно?

+0

Я не думаю, что ваша проблема в ячейках таблицы, они выглядят нормально, я думаю, проблема в самом TableView. Похоже, вы сделали это ограниченным краем раскадровки размером 600. – dstudeba

+0

Должен ли я не ограничивать его по краям? –

+0

Да, вы должны, но вы не хотите, чтобы он был шириной в 600 раз, и это то, что похоже на происходящее. Я не уверен, каковы ваши ограничения, но если у вас ограниченное ограничение ширины, это может вызвать проблему, которую вы видите. – dstudeba

ответ

1

Раскадровка не отображает содержимое в соответствии с любым устройством по умолчанию. Вы можете установить его на свое текущее устройство в его свойствах размера (по умолчанию это «Inferred»). Ограничения используются для отображения представлений, равных всем устройствам. Они автоматически настраивают UIelements в соответствии с размером экрана. Поэтому, если вы хотите, чтобы ваше приложение запускалось на устройствах разных размеров, вам приходится полагаться на ограничения.

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

Смежные вопросы