我是一位经验丰富的iPhone开发人员,开始使用我的第一台Mac应用程序。真正让我失望的一件事是UIView和NSView之间的差异。我似乎无法通过界面构建器设置NSView的背景颜色,因为我可以使用UIView。通过简单地向它发送一个setBackgroundColor:消息,我似乎无法做到这一点。我看到的所有示例都覆盖了drawRect:在NSView的子类中。这真的是唯一的方法吗?这里的概念差异是什么,为什么会这样?注意:我只是尝试将背景颜色设置为默认灰色。
答案 0 :(得分:7)
回复:亚历克斯的回答:
这不仅仅是因为它更老了;或者更确切地说......它不是它已经老了。事实是UIKit 更简单。 UIView是一个比NSView更不通用的构造; Apple正在推动iPhone上内容丰富的应用程序的一般方法是使用OpenGL或Core Animation,将UIView大体上放到简单的容器中。在这种情况下,setBackgroundColor:非常有用。
另一方面,在Mac上,NSView是一个高度通用的界面元素,对于大多数用途,setBackgroundColor:只是毫无必要。 10次中的9次,如果你在Mac上并改变背景颜色,这可能是因为你准备自己绘制用户界面元素,或者你正在做一些很可能不被AHIG宽恕的事情。
总结:
除了继承它之外别无他法。 (NSView用于子类化,UIView用于插入和使用。)
答案 1 :(得分:3)
请记住,AppKit比UIKit大很多,比20岁还要年长。 AppKit中没有您认为基本和必要的许多功能。
所以答案是肯定的:如果你想在NSView
子类上绘制彩色背景,你需要覆盖drawRect:
。 NSRectFill
可以轻松完成此操作。