我是一位經驗豐富的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. 的CALayer與drawRect中
- 6. drawRect不工作在Iphone
- 7. iPhone - 試圖找出drawRect:
- 8. drawRect和tabBar(iphone iOS 4)
- 9. iPhone - setNeedsDisplay不會調用drawRect
- 10. 石英iPhone drawRect不叫
- 11. Coredata iPhone到iPad/Mac與iCloud?
- 12. 與Mac上的Django與MySQL
- 13. CALayer的shouldRasterize與UIView的drawRect?
- 14. iPhone的sqlite與dekstop/mac上的sqlite同步
- 15. iPhone - 清理UIView的外部drawRect
- 16. iPhone:沒有辦法在drawRect之外的屏幕上繪製?
- 17. 是否有必要在iPhone上緩存-drawRect的常用操作?
- 18. 與mac通信iphone的最佳方式?
- 19. 通過mac上的USB端口與iphone進行通信
- 20. 使用iphone觸發Mac上的事件
- 21. MAC服務器上的iPhone SDK
- 22. 獲取藍牙MAC上的iPhone地址
- 23. iphone和mac上的quartz2d區別
- 24. 如何編輯Mac上的iPhone照片
- 25. EaselJS上的drawRect色差()
- 26. bindkey與Mac上的zsh
- 27. CosmosBoot與Mac上的Mono
- 28. iPhone:如何在drawRect中包裝文本?
- 29. drawRect在iPhone中反轉imageView(模擬器)
- 30. iPhone:在drawRect中調整大小:
我明白了。只是想確保我沒有錯過任何東西。謝謝! – 2010-06-14 19:53:34