Статические или прототипные подпредставления UITableViewCell неправильно изменяются в раскадровке на Xcode 6.1.1, iOS 8.1 SDK

Поэтому я обновился до Xcode 6.1 ранее и 6.1.1 сегодня. Я заметил, что есть проблема при использовании Static/Prototype UITableViewCell (или Prototype UICollectionViewCell) в раскадровке. Все подпредставления с определенными масками автоматического изменения размера будут изменены неправильно при работе на устройстве/симуляторе.

UISlider как подвид статического UITableViewCell

UISlider как подпредставление Static UITableViewCell

Правило автоматического изменения размера - это гибкая ширина. Или гибкое левое поле также вызывает проблему.

Правило автоматического изменения размера — "Гибкая ширина". Или гибкое левое поле также вызывает проблему.

Наблюдение за ползунком слишком долгое, исчезает с экрана справа

Наблюдение за ползунком слишком длинное, исчезло с экрана справа

Я уже отправил отчет об ошибке в Apple. Надеюсь получить ответ в ближайшее время.


person thkeen    schedule 03.12.2014    source источник
comment
Кто-нибудь обновился до Xcode 6.1.1 и уже использовал UICollectionViewCell?   -  person thkeen    schedule 10.12.2014
comment
происходит то же самое .. решение этого ??   -  person Frade    schedule 26.06.2015


Ответы (1)


У меня была такая же проблема, и я нашел решение, которое работает для меня. Кажется, что 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
comment
Это удивительная находка! Проблема также присутствует на <collectionViewCell>. - person Wex; 23.02.2015