我有一个可缩放的UIScrollView,里面有一些CATextLayer
和简单的CALayer
。
它们被渲染得很好,但问题是当它们被缩放时它们会变得模糊。 (即使我重绘它们)
当缩放视图时,我的选项是什么让我的文字不模糊?
我应该用另一件东西吗?在CATextLayer
/ CALayer
中启用某些内容?欢迎任何想法;)
我正在使用CALayer
,因为正如文档中所建议的那样,CALayer
比UIViews
轻,我有数百个。目前它运作顺利。我尝试使用UIWebView
,我的CALayer
版本更快;)
提前致谢。
答案 0 :(得分:16)
iOS在放大之前光栅化文本,这就是它如此模糊的原因。您只需要修复CATextLayer的一个属性contentsScale,即可在缩放后获得更高质量的渲染。实现此UIScrollViewDelegate方法:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView
withView:(UIView *)view
atScale:(float)scale
{
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithBool:YES]
forKey:kCATransactionDisableActions];
uglyBlurryTextLayer.contentsScale = scale;
[CATransaction commit];
}
这告诉图层使用更多像素来渲染文本,并在进行特定更改时禁用Core Animation。