У меня была такая же проблема, и я нашел решение, которое работает для меня. Кажется, что Xcode не (всегда) записывает начальные размеры кадров ячеек табличного представления и их представлений содержимого.
Если вы откроете раскадровку в другом редакторе (желательно с закрытым Xcode) и посмотрите на свои ячейки, вы должны найти следующее:
<tableViewCell ...>
<autoresizingMask .../>
<tableViewCellContentView ...>
Ряд приведенных выше ключей и атрибутов для краткости опущен. Чего не хватает из вышеперечисленного, так это ключей rect
для tableViewCell
и tableViewCellContentView
. Автоматическое изменение размера зависит от начального размера кадра для определения смещения справа/снизу. Без начального размера кадра (задаваемого клавишами rect
) начальный кадр рассчитывается как 0,0,0,0, что не влияет на элементы, закрепленные вверху или слева, но (конечно) влияет на элементы, закрепленные справа /низ.
Чтобы решить эту проблему, убедитесь, что для каждого tableViewCell
и tableViewCellContentView
есть (правильный) ключ rect
, например:
<tableViewCell ...>
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask .../>
<tableViewCellContentView ...>
<rect key="frame" x="0.0" y="0.0" width="320" height="43"/>
Если у вас включен дополнительный вид для ячейки, вам может потребоваться уменьшить ширину представления содержимого для этой ячейки. Ширина/высота, показанные в Xcode (выделены серым цветом) для представления содержимого, — это то, что следует ввести в раскадровку (вручную).
Я должен добавить, что Xcode не удаляет эти rect
клавиши из раскадровки при редактировании, поэтому после завершения редактирования раскадровка должна быть полностью редактируемой с помощью Xcode.
person
Sam Jacobson
schedule
02.02.2015