【发布时间】:2012-07-11 22:56:10
【问题描述】:
我有一个自定义 drawRect 方法的视图,它有两条固定宽度的文本行。
这个视图以每秒大约 16 个计时器的速度不断地重绘,文本的位置和文本的内容一直在变化。
我还需要以在任何背景下都清晰可见的方式绘制文本,为此我执行以下操作:
CGContextSetTextDrawingMode(ctx, kCGTextStroke); // Border mode
[string drawAtPoint:point withFont:font];
CGContextSetTextDrawingMode(ctx, kCGTextFill); // Text mode
[string drawAtPoint:point withFont:font];
此代码以固定线宽的边框模式绘制文本,然后在相同位置再次以填充模式绘制文本。通过这种方式,我得到了每个字母周围带有白色边框的蓝色文本。
除了表现之外,结果对我来说绝对令人满意。 使用 Time Profiler 我注意到绘制整个视图所花费的大约 70% 的时间都花在了以边框(笔划)模式绘制文本上。但是在填充模式下绘制只需要整个视图绘制时间的 3%。考虑到视图重绘的频率,我认为这样做效率不高。
那么有人知道如何以更有效的方式在每个字母周围绘制带有边框的文本吗?
【问题讨论】:
标签: objective-c ios cocoa text border