2015-05-29 1 views
1

У меня есть UITableview с пользовательской ячейкой, используя универсальные/унифицированные раскадровки. Для iPad я хотел бы, чтобы высота строки составляла 120 и составляла 70 для всех других классов размера.Как имитировать 2 разных высоты строк для UItableview в универсальных раскадровках на основе класса размера?

Я не вижу прямого способа изменить высоту строки в раскадровке на основе классов размера (только одна высота строки для всех классов размера).

Основная причина, по которой я хочу это сделать, - разместить больше UIImageView для размера класса ipad.

Для любой высоты любого размера по ширине: UIImageView Высота равна 60, прикреплена к верхней и нижней части по 5 штук.

Для обычной высоты и обычной ширины размер класса: UIImageIvew высота 100, прикрепленная к верхней и нижней части по 10 каждый.

Поскольку я могу сделать только 1 высоту строки, добавление этих противопоказаний на основе класса размера вызывает предупреждения/ошибки, поскольку эти ограничения несовместимы только с высотой в 1 строку.

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

ответ

1

В прошивке 8:

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

  • Ограничения могут быть условно на основе класса размера; это то, что для виджета класса размера в нижней части холста. Вы проектируете общий чехол под w: Любой h: Любой, и переключитесь на любой специальный случай и измените ограничения только для этого случая.

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

+0

Thanks Matt. Я хотел знать, есть ли способ раскадровки (одна из причин, по которой я хотел начать использовать универсальные раскадровки), в отличие от изменения размера всего кода (ограничений и высоты строки) на основе обнаруженного устройства. – mrl

+0

Проблема в том, что вы хотите сделать это только для одной строки. Единственный способ сделать это - «tableView: heightForRow ...». Это не имеет никакого отношения к раскадровки и размерным классам и так далее. Вы можете настроить свои ограничения, чтобы компенсировать измененную высоту, но высота должна быть указана в коде, как я уже сказал. – matt

+0

Извините, я должен был что-то сказать неоднозначно. Все строки для iPad будут одинаковыми (высота 120), а все строки для iPhone будут одинаковыми (высота 70). Я хочу иметь возможность использовать 1 раскадровку для обоих классов, но строки будут одинаковой высоты в каждом классе размеров. – mrl