DrawRect на iPhone против Mac - PullRequest
2 голосов
/ 14 июня 2010

Я опытный разработчик iPhone, начинающий работать над моим первым приложением для Mac. Одна вещь, которая действительно отталкивает меня - это различия между UIView и NSView. Кажется, что я не могу установить цвет фона NSView через конструктор интерфейса, как я могу с UIView. Также кажется, что я не могу сделать это, просто отправив ему setBackgroundColor: сообщение. Все примеры, которые я видел, переопределяют drawRect: в подклассе NSView. Это действительно единственный способ сделать это? В чем здесь принципиальная разница и почему так? ПРИМЕЧАНИЕ. Я только пытаюсь установить цвет фона на серый по умолчанию.

Ответы [ 2 ]

7 голосов
/ 14 июня 2010

Re: Алекс отвечает:

Дело не только в том, что он старше;или, скорее, ... Это не , что оно старше.В том-то и дело, что UIKit проще .UIView является гораздо менее общей конструкцией, чем NSView;Основной метод, который Apple продвигает для приложений, насыщенных контентом на iPhone, - это использование OpenGL или Core Animation, в целом UIView превращает в простой контейнерный материал.В этом контексте setBackgroundColor: полезно.

На Mac, с другой стороны, NSView является весьма универсальным элементом интерфейса, и для большинства применений setBackgroundColor: будет просто ненужным.9 из 10 раз, если вы работаете на Mac и меняете цвет фона, это либо потому, что вы готовитесь сделать свой собственный рисунок элементов пользовательского интерфейса, либо вы делаете что-то, что, скорее всего, не одобряется AHIG.

В итоге:

Нет способа отделить его от подклассов.(NSView создан для создания подклассов, UIView предназначен для размещения и использования.)

3 голосов
/ 14 июня 2010

Помните, что AppKit намного, намного старше UIKit - примерно на 20 лет старше.Многие функции, которые вы считаете базовыми и необходимыми, просто отсутствуют в AppKit.

Поэтому ответ «да»: если вы хотите нарисовать цветной фон на подклассе NSView, вам нужно переопределить drawRect:.NSRectFill позволяет легко это сделать.

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