2010-06-14 64 views
2

我是一位经验丰富的iPhone开发人员,开始在我的第一台Mac应用程序上工作。有一件事让我很失望,就是UIView和NSView之间的差异。看来我无法像使用UIView一样通过界面生成器设置NSView的背景颜色。我似乎也无法通过简单地向它发送一个setBackgroundColor:消息来做到这一点。我所看到的所有例子都覆盖了drawRect:在NSView的一个子类中。这真的是唯一的方法吗?这里有什么概念上的区别,为什么这样呢?注:我只是试图将背景颜色设置为默认灰色。iPhone与Mac上的DrawRect

回答

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可以很容易地做到这一点。

+0

我明白了。只是想确保我没有错过任何东西。谢谢! – 2010-06-14 19:53:34