任何人都可以向我解釋NSAttributedString如何正確遵循MVC範例嗎?我知道它不是從NSString繼承的,但它仍然是一個字符串,所以我會說這是我的模型的一部分。然而,設置界面屬性,如下劃線,字體,陰影等顯然是MVC的一部分,所以我不確定這是如何遵循規則的。NSAttributedString如何遵循MVC範例?
回答
NSAttributedString是一個模型類。
它只是表示屬性字符串。
僅僅因爲它存儲的屬性,並不負責顯示的屬性。
想象一下,您有一個自定義形狀類。如果你有一個正方形的形狀並存儲它的顏色,它仍然是一個模型對象,因爲它取決於呈現視圖來繪製正方形並用顏色填充它,模型對象只是存儲屬性的地方。
這確實有道理,但他們爲什麼不讓這些屬性成爲顯示字符串的視圖的一部分?據我所知,UIKit中顯示的大多數文本都是基於'UILabel'的,所以爲什麼他們不給它們顯示這些屬性的能力呢?現在,例如,如果我想要一個帶綠色下劃線的文本,我在UILabel上設置顏色,並在字符串本身上設置下劃線。看起來並不一致? –
'textColor'屬性是一種方便,它編輯底層的'attributesString';如果你想在一個地方改變下劃線和顏色,你可以用你想要的樣式創建一個屬性字符串,並使用UILabel上的'屬性字符串'屬性來設置它。他們使用的習慣使得爲了方便起見,不同文本類之間的關係更加模糊,但是在其MVC的背後。 – iluvcapra
好吧,那我現在看看它是如何工作的,謝謝! –
NSAttributedString
提供基礎設施,並且是可可風格文本模型類NSTextStorage
的超類。一個NSTextStorage
只是一個NSAttributedString
,可以與佈局管理器交談,並執行一些關於編輯的簿記/便利方法。
控制器的職責由NSLayoutManager
處理。這很大程度上與將unicode字符串轉換爲字形,設計它們並進行各種幾何計算有關。它完成了關於NSTextContainer
對象的所有操作,其中(在基類的情況下)只是看中了NSSize
s佈局管理器可以使用它來計算字形應該在哪裏觸發,哪裏應該發生換行等。
可可的風格文本視圖類是NSText
及其子類,使用標尺,字體和顏色面板。 NSTextView
是NSText
子類,而NSCells
共享NSText
對象以編輯其內容。 NSText
是NSResponder
,它接受textStorage和layoutManager(如果存在)的文本編輯消息。
- 1. 編程範例遵循
- 2. 遵循MVC範例,正確的方法是什麼?
- 3. 如何設置NSAttributedString範圍?
- 4. Joomla!遵循MVC架構?
- 5. NSAttributedString指定範圍?
- 6. 如何遵循按時間
- 7. Google Chrome是否遵循Firefox規範
- 8. UITableView的實現,遵循MVC模式
- 9. 帶動態範圍的NSAttributedString
- 10. Hipaa遵循ASP.NET
- 11. action_mailer.delivery_method遵循
- 12. 創建遵循MVVM範例的菜單欄的最佳方式是什麼?
- 13. 如何使setuptools遵循符號鏈接?
- 14. 如何讓對象遵循路徑
- 15. 如何在Unity C#中遵循COM IntPtr?
- 16. Golang:如何遵循的位置,餅乾
- 17. 如何遵循Python中的meta刷新
- 18. 如何遵循一定的規律
- 19. ApacheBench如何遵循重定向
- 20. 如何-NSAttributedString到CGImageRef
- 21. 讓CodeMirror遵循TextArea
- 22. 遵循與狀態
- 23. EKEvent不遵循EKRecurrenceRule
- 24. SpriteNode不遵循cgpath
- 25. 「誰遵循」算法
- 26. 遵循Eclipse線寬
- 27. Wireshark-遵循TCP流
- 28. 格遵循滾動
- 29. 如何在Django中列出關係manytomany的對象?例如:用戶,並遵循
- 30. 如何創建具有範圍屬性的不可變NSAttributedString
誰說它必須符合MVC? –
蘋果公司的大多數東西都是符合MVC的,所以它有道理,也就是'NSAttributedString'。 – Hyperbole