Iphone NSString drawInRect与核心文本

Iphone NSString drawInRect与核心文本,iphone,objective-c,ios,core-text,Iphone,Objective C,Ios,Core Text,我在文档中读到,NSStringcategory方法drawInRect适用于少量文本,但对于大量文本来说开销太大。在我的例子中,另一种选择是使用核心文本CTFrameDraw 我的问题是,使用drawInRect与核心文本之间的“分界点”是什么?核心文本是否总是比drawInRect快?如果额外的编程不是问题,我是否应该总是使用核心文本而不是drawInRect,即使是小字符串 大部分时候我会画段落,但有时它们也可能是短线 对于我来说,当我从平面设计师那里得到一些具体要求时,我会使用核心文本。

我在文档中读到,
NSString
category方法
drawInRect
适用于少量文本,但对于大量文本来说开销太大。在我的例子中,另一种选择是使用核心文本
CTFrameDraw

我的问题是,使用
drawInRect
与核心文本之间的“分界点”是什么?核心文本是否总是比
drawInRect
快?如果额外的编程不是问题,我是否应该总是使用核心文本而不是
drawInRect
,即使是小字符串


大部分时候我会画段落,但有时它们也可能是短线

对于我来说,当我从平面设计师那里得到一些具体要求时,我会使用核心文本。例如,需要混合颜色、类型、字体大小等的标签。drawRect是在视图层中绘制内容的方法,只是CG函数的包装器,核心文本是处理如何绘制文本的完整框架:更改字体、空格、行间线。
我的意思是,这是不公平的比较,一个更好的问题可能是当涉及到使用核心文本而不是普通的UI文本porpoise对象时,答案是基于你的应用程序设计UI相关的要求。希望这能有所帮助。

对于我来说,当我从平面设计师那里得到一些具体要求时,我会使用核心文本。例如,需要混合颜色、类型、字体大小等的标签。drawRect是在视图层中绘制内容的方法,只是CG函数的包装器,核心文本是处理如何绘制文本的完整框架:更改字体、空格、行间线。
我的意思是,这是不公平的比较,一个更好的问题可能是当涉及到使用核心文本而不是普通的UI文本porpoise对象时,答案是基于你的应用程序设计UI相关的要求。希望这能有所帮助。

我将编写一些测试代码,使用您期望的字符串内容统计分布,对正在考虑的两种方法进行基准测试。可能是一个计时,使用每种方式可以渲染数千万个字符串。在实际的iOS设备上运行基准测试,因为使用ARM目标框架的相对性能可能会有所不同。

我将编写一些测试代码,使用预期的字符串内容统计分布对正在考虑的两种方法进行基准测试。可能是一个计时,使用每种方式可以渲染数千万个字符串。在实际的iOS设备上运行基准测试,因为使用ARM目标框架的相对性能可能会有所不同。

我想知道使用UIWebView是否能获得所有可能的性能。iOS(以及每个操作系统)都有一个不断加载的webkit随时可用。它也进行了很好的优化。这也会减轻工作负担


比较起来很有趣。

我想知道使用UIWebView是否能获得所有可能的性能。iOS(以及每个操作系统)都有一个不断加载的webkit随时可用。它也进行了很好的优化。这也会减轻工作负担


比较起来很有趣。

在测试和评测过程中,当你注意到你的应用程序响应太慢时,当你评测时,你会注意到大部分不可接受的时间都花在
drawInRect:
。呃,我相信这是一个真正的答案。这才是真正的答案。有些人可能会给出一些他们“认为”在他们的情况下效果很好的非特定建议,但由于你如何绘制字符串、字符串中的字符、使用的字体等都会产生巨大的差异,因此你需要针对你的情况进行测试。@Jason:唉,这对于移动设备来说可能是个糟糕的答案。不为预期热点设计/规划应用程序可能会浪费用户的电池寿命。@hotpaw2这应该是测试和分析的一部分。如果你正在做的事情是耗尽电池,你应该处理它。用户提出的问题没有是或否的答案。答案是根据您的特定需求进行原型设计、配置、测试并从那里开始。截止时间是在测试和配置期间,您注意到您的应用程序响应太慢,当您分析时,您注意到大部分不可接受的时间都花在
drawInRect:
。呃,我相信这有一个真正的答案。这才是真正的答案。有些人可能会给出一些他们“认为”在他们的情况下效果很好的非特定建议,但由于你如何绘制字符串、字符串中的字符、使用的字体等都会产生巨大的差异,因此你需要针对你的情况进行测试。@Jason:唉,这对于移动设备来说可能是个糟糕的答案。不为预期热点设计/规划应用程序可能会浪费用户的电池寿命。@hotpaw2这应该是测试和分析的一部分。如果你正在做的事情是耗尽电池,你应该处理它。用户提出的问题没有是或否的答案。答案是根据您的具体需求进行原型设计、配置、测试,然后从那里开始。