2010-06-14 3 views
2

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

ответ

7

Re: Алекс Ответ:

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

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

В итоге:

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

3

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

Итак, да, если вы хотите нарисовать цветной фон на подклассе NSView, вам необходимо переопределить drawRect:. NSRectFill упрощает это.

+0

Я вижу. Просто хотел убедиться, что я чего-то не упустил. благодаря! –

Смежные вопросы