我是一位经验丰富的iPhone开发人员,开始在我的第一台Mac应用程序上工作。有一件事让我很失望,就是UIView和NSView之间的差异。看来我无法像使用UIView一样通过界面生成器设置NSView的背景颜色。我似乎也无法通过简单地向它发送一个setBackgroundColor:消息来做到这一点。我所看到的所有例子都覆盖了drawRect:在NSView的一个子类中。这真的是唯一的方法吗?这里有什么概念上的区别,为什么这样呢?注:我只是试图将背景颜色设置为默认灰色。iPhone与Mac上的DrawRect
2
A
回答
7
回复:亚历克斯的回答:
这不仅仅是它的年龄较大;或者更确切地说; ...它不是,它的年龄更大。事实是,UIKit是更简单。 UIView是一个比NSView更少的一般构造;苹果在iPhone上推广内容丰富的应用程序的一般方法是使用OpenGL或核心动画,将UIView大致归为简单的容器。在这种情况下,setBackgroundColor:很有用。
在Mac上,另一方面,NSView是一个高度通用的界面元素,对于大多数用途来说,setBackgroundColor:只是不必要的。如果您在Mac上并改变背景颜色,则可能会有10次中的9次,这是因为您正在准备自己绘制用户界面元素,或者您正在执行最有可能不被AHIG宽恕的内容。
总结:
除了继承子类,没有办法。 (NSView是用于子类化的,UIView是用于放置和使用的。)
3
请记住,AppKit比UIKit —年龄大得多,比老年人大20岁。许多您认为基本和必要的功能都不在AppKit中。
所以答案是肯定的:如果你想在NSView
子类上画一个彩色背景,你将需要覆盖drawRect:
。 NSRectFill
可以很容易地做到这一点。
相关问题
- 1. iPhone - 优化的drawRect
- 2. iPhone - 一个大约的drawRect
- 3. Mac上的iPhone dev迷你
- 4. Mac上的本地开发与Windows上的Dragonfire SDK - iPhone开发
- 5. drawRect不工作在Iphone
- 6. 石英iPhone drawRect不叫
- 7. iPhone - 试图找出drawRect:
- 8. iPhone - setNeedsDisplay不会调用drawRect
- 9. 与Mac上的Django与MySQL
- 10. iPhone的sqlite与dekstop/mac上的sqlite同步
- 11. iPhone - 清理UIView的外部drawRect
- 12. 是否有必要在iPhone上缓存-drawRect的常用操作?
- 13. iPhone:没有办法在drawRect之外的屏幕上绘制?
- 14. 与mac通信iphone的最佳方式?
- 15. 通过mac上的USB端口与iphone进行通信
- 16. 如何编辑Mac上的iPhone照片
- 17. iphone和mac上的quartz2d区别
- 18. 使用iphone触发Mac上的事件
- 19. MAC服务器上的iPhone SDK
- 20. 获取蓝牙MAC上的iPhone地址
- 21. bindkey与Mac上的zsh
- 22. CosmosBoot与Mac上的Mono
- 23. iPhone:在drawRect中调整大小:
- 24. iPhone:如何在drawRect中包装文本?
- 25. 帮助需要与drawRect:
- 26. iOS:CGContextRef drawRect与输入不符
- 27. Tiger MAC的Iphone SDK
- 28. 的drawRect:不呼吁的NSView与CAMetalLayer
- 29. 嵌套的JSON与iPhone上的restkit iphone
- 30. 如何在Mac上安装cocos2d-iphone?
我明白了。只是想确保我没有错过任何东西。谢谢! – 2010-06-14 19:53:34