Я опытный iPhone-разработчик, который начал работать над моим первым Mac-приложением. Одна вещь, которая действительно меня отбрасывает, - это различия между UIView и NSView. Кажется, что я не могу установить цвет фона NSView через конструктор интерфейса, как я могу, с UIView. Также кажется, что я не могу этого сделать, просто отправив сообщение setBackgroundColor:. Все примеры, которые я видел, являются переопределяющими drawRect: в подклассе NSView. Это действительно единственный способ сделать это? Какая здесь концептуальная разница, и почему это так? ПРИМЕЧАНИЕ. Я пытаюсь установить цвет фона по умолчанию по умолчанию.DrawRect на iPhone против Mac
ответ
Re: Алекс Ответ:
Это не просто, что он старше; или, скорее, ... Это не, что он старше. Дело в том, что UIKit проще. UIView - гораздо менее общая конструкция, чем NSView; общий метод, который Apple продвигает для приложений, богатых контентом, на iPhone использует OpenGL или Core Animation, отбрасывая UIView, в общем и целом, на простой контейнер. В этом контексте полезно использовать setBackgroundColor:.
С другой стороны, на Mac, NSView является очень универсальным элементом интерфейса, и для большинства применений setBackgroundColor: просто будет просто ненужным. 9 из 10 раз, если вы находитесь на Mac и меняете цвет фона, это либо потому, что вы готовитесь делать свой собственный рисунок элементов пользовательского интерфейса, либо делаете то, что скорее всего не оправдывает AHIG.
В итоге:
Существует никоим образом, кроме подклассов его. (NSView предназначен для подкласса, UIView сделан для ввода-вывода.)
Помните, что AppKit намного старше, чем UIKit —, как и на 20 лет. Многие функции, которые вы считаете базовыми и необходимыми, просто отсутствуют в AppKit.
Итак, да, если вы хотите нарисовать цветной фон на подклассе NSView
, вам необходимо переопределить drawRect:
. NSRectFill
упрощает это.
- 1. iPhone - вопрос о DrawRect
- 2. iPhone - попытка выяснить drawRect:
- 3. iPhone: изменение размера в drawRect:
- 4. Кварц 2D drawRect метод (iPhone)
- 5. drawRect не работает In Iphone
- 6. Quartz iPhone drawRect не называется
- 7. iPhone - setNeedsDisplay не называет drawRect
- 8. iPhone: drawRect называется один раз
- 9. iPhone: нет способа рисовать на экране снаружи drawRect?
- 10. CALayer's должен Rasterize против UIView's drawRect?
- 11. Mac/iPhone: потоковое видеофайлы на iPhone
- 12. Двойной против поплавка на iPhone
- 13. iPhone SDK на сервере MAC
- 14. Переход с iPhone на Mac?
- 15. iPhone dev на mac Mini
- 16. iPhone: почему не нарисован вызов drawRect?
- 17. iPhone: как обернуть текст в drawRect?
- 18. Игровые движки для iPhone против разработки iPhone на базе iPhone
- 19. iPhone - UIView добавляет subView vs drawRect?
- 20. Как нарисовать линию из DrawRect функции на Iphone
- 21. Нужно ли кэшировать общие операции для -drawRect: на iPhone?
- 22. Проблема Java DateFormat на Mac против Windows
- 23. drawRect не называется
- 24. DrawRect на 2,3
- 25. EaselJS цветоразностного на DrawRect()
- 26. Родная разработка на Mac против Dragonfire SDK на Windows - разработка iPhone
- 27. iPhone против подавления Javascript
- 28. Параллельный drawRect:
- 29. iPhone для Mac Development
- 30. CoreMotion Bump против Shake на iPhone
Я вижу. Просто хотел убедиться, что я чего-то не упустил. благодаря! –