2009-04-08 50 views
2

有沒有人知道是什麼讓蘋果在將AppKit變成UIKit時遺漏了NSAttributedString?爲什麼iPhone上沒有NSAttributedString?

的原因,我問的是,我真的想在我的iPhone應用程序使用它,而且似乎沒有更換或替代比做自己...

它可能有混合字體屬性對一個字符串來說 - 實現類似的功能只需要很多工作就可以完成,只需要使用NSAttributedString的幾行代碼即可完成。

另外,自己做所有這些額外的繪圖代碼使我的表格視圖單元格變得非常沉重,並且真的會損害性能。

任何人有任何想法?任何天才的工作在開源替代NSAttributedString?

回答

11

NSAttributedString現在是在iPhone上的4.0 Beta版的

3

恐怕你將不得不推出自己的。如果你在繪製表格時陷入困境,我可能會切換到原始的Quartz調用;嘗試將所有繪圖轉儲到單個視圖中,並在其中完成所有複雜的字符串繪圖。 NSAttributedString非常方便,但我不認爲它使用所有那麼多特殊的AppKit-mojo來獲得比直接繪製字符串更好的性能。

+0

我怕的就是這個。感謝您的建議。 – Jasarien 2009-04-08 13:18:06

0

另一種方法是使用帶有HTML的UIWebView。或者,如果你膽大,你可以利用UITextView上的未記錄的setHTML方法來設置格式化文本的小片段...

對我來說,這似乎更像是支持格式化文本的未來,在某種程度上利用Webkit輸出格式化的字符串。

+1

真的嗎?網頁視圖?難道他們不會爲了展示標籤而花費很多內存嗎? *困惑*。 – Jasarien 2009-04-09 07:34:17

+0

當您使用共享渲染引擎時,記憶力不是很大......請記住,這是WebKit,並不是真正的完整瀏覽器,甚至是Javascript解釋器。 – 2009-04-09 17:30:56

+3

@肯德爾:恩? WebKit(UIWebView)*是一個帶JS解釋器的完整瀏覽器。 – Kornel 2009-06-25 16:25:49

4

目前從文檔推薦的方式來做到這一點是使用UIWebView。

4

我不知道這是否仍然適合您,但Joe Hewitt已經發布了他的three20庫,其中包含TTStyledTextTTStyledTextLabel以滿足您的需求。

2

上面的回答表明,NSAttributedString可以用OS 4.0及以上,但每個文檔它可在3.2:

NSAttributedString類參考
繼承 NSObject的
符合 NSCoding,NSCopying,NSMutableCopying,NSObject的(NSObject的)
框架 /System/Library/Frameworks/Foundation.framework
可用性可用於iPhone OS 3.2及更高版本。
配套指南屬性串編程指南
聲明NSAttributedString.h