我是一位經驗豐富的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