2010-06-14 62 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