如果我有多个自定义UITableViewCells或带有多个标签和UI元素的UICollectionViewCells,并且保持良好的滚动速度至关重要,那么CoreText是否会比TextKit更快的解决方案?
答案 0 :(得分:2)
在不知道细节的情况下,不能回答这个问题。如果您想知道您必须编写代码的两个版本并测量哪个版本更快。在你完成之前,答案永远是"它取决于"。
最好的建议是从更高级别的API(本例中为Text Kit)开始,看看性能是否足够好。如果是,那么忘记这个问题。如果没有启动分析器并找出需要改进的地方,可能会在稍后回来询问有关如何优化的具体问题。
答案 1 :(得分:2)
TextKit构建于CoreText之上。使用更高级API的开销可以忽略不计。
事实上,在很多情况下,TextKit类是免费的桥接到他们的CoreText等价物(就像Foundation
类NSString
或NSDictionary
是免费的桥接他们的CoreFoundation
同行。例如:NSParagraphStyle
免费桥接到CTParagraphStyle
:
NSMutableParagraphStyle *paragraphStyle =
[[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentRight;
CTTextAlignment alignment;
CTParagraphStyleGetValueForSpecifier((CTParagraphStyleRef)paragraphStyle,
kCTParagraphStyleSpecifierAlignment,
sizeof(CTTextAlignment),
&alignment);
NSAssert(alignment == kCTTextAlignmentRight, @"!!");
在大多数情况下,您最终会编写大量样板来访问CoreText API。 TextKit为您处理了很多这样的事情。
底线,尽可能使用TextKit。如果使用TextKit无法获得结果,请使用CoreText。