2009-04-08 47 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