Iphone - Рисование в взгляде: философия и взаимодействие - PullRequest
1 голос
/ 06 апреля 2011

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

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

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

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

Я прочитал много документов о рисунках (apple, web, форумы, учебные пособия, ...), но я все еще не могуприкоснитесь к философии того, как это должно быть сделано.

Ответы [ 2 ]

5 голосов
/ 06 апреля 2011

это очень просто. Создайте новый класс, OliverView, который является UIView. (т.е. это подкласс UIView.) В этом представлении заставьте его рисовать вещи причудливым образом, внутри drawRect.

Теперь создайте UIViewController, который называется OliverVC. В раскадровке поместите OliverView внутри OliverVC. ( объяснение начинающего, как это сделать ).

В OliverView есть свойства «часы», «минуты», «секунды».

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

Теперь, в OliverVC, сделайте некоторые вычисления, чтобы определить время в Зимбабве, например.

Как только вы хотите отобразить время, просто установите эти свойства в OliverView - - и все готово.

Ваш коллега может программировать OliverView. Вам не нужно ничего знать о том, как она собирается показывать время. Наоборот, вашему коллеге не нужно ничего знать о ваших вычислениях в OliverVC ..

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

Это единственная возможная архитектура для экранного устройства «в реальном времени», где виды могут меняться и изменяются в любое время.


В ответ на ваш вопрос ниже: вы просто забыли об этом, если у вас есть кнопка, которая будет представлять собой отдельный элемент. (Возможно, сидя «над» OliverView.) Так что это просто!

2 голосов
/ 06 апреля 2011

Метод -drawRect в вашем подклассе UIView определяет внешний вид представления на экране.Все рисование выполняется в -drawRect.Ваш UIViewController вызывает методы в своем UIView, чтобы сказать ему рисовать что-то по-другому или выполнять какие-то другие действия.

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

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