Cocoa-Touch: как сделать верстку - PullRequest
4 голосов
/ 02 ноября 2009

У меня есть представление (UIScrollView), которое загружает некоторые данные и отображает различные вещи из них в различных подпредставлениях. Таким образом, у меня есть приблизительно 10 подпредставлений (UIImageView, UILabel), и мне нужно разместить их программно, учитывая их непредсказуемое содержание (то есть различную высоту / ширину для UILabel s в зависимости от свойства текста).

Из того, что я прочитал, нет основы компоновки для Cocoa-touch.

Каков наилучший способ сделать это?

Из того, что я могу сказать, я должен поместить содержимое в представления, а затем начать вычислять координаты на основе их кадров после вызова их методов sizeToFit.

Этот подход очень подвержен ошибкам. Неужели нет другого пути?

Ответы [ 4 ]

6 голосов
/ 02 ноября 2009

Вы правы, автоматических менеджеров по раскладке нет. Подклассы UIScrollView и переопределение layoutSubviews, вероятно, являются правильным способом реализации вашего собственного алгоритма. Затем вы можете позвонить setNeedsLayout, чтобы сделать макет.

3 голосов
/ 02 ноября 2009

Макет в Какао обычно выполняется с автоматическим изменением размера (используя autoresizingMask). Вы начинаете со своего представления в некотором жестко заданном начальном размере, скажем, 200x200; поместите ваши подпредставления в это представление и соответственно установите флаги авторазмера. Это представление затем может быть свободно изменено до его фактического размера, как определено его родительским представлением / окном. Процесс одинаков, независимо от того, используете ли вы Interface Builder или делаете это программно.

Если вам нужен вертикальный стек представлений, вы можете использовать табличное представление.

Если вам нужен более сложный макет, вам нужно реализовать его самостоятельно, переопределив layoutSubviews.

1 голос
/ 02 ноября 2009

Мне не известны какие-либо автоматические менеджеры макетов или тому подобное.

Итак, я думаю, вам придется рассчитать желаемые позиции и размеры и обновить frame ваших подпредставлений вручную.

РЕДАКТИРОВАТЬ: я нашел этот вопрос , где Брэд Ларсон указывает на пример менеджера пользовательского макета. НТН

0 голосов
/ 02 ноября 2009

Вы можете использовать Interface Builder для создания представления, а затем перетаскивать в него элементы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...