问题描述
我有一个可缩放的 UIScrollView,其中包含一些 CATextLayer 和简单的 CALayer.它们被渲染得很好,但问题是当它们被放大时它们变得模糊.(即使我重画它们)
I have a zoomable UIScrollView with some CATextLayers and simple CALayers in it.
They get rendered fine but the problem is when they are zoomed they become blurry. (Even if I redraw them)
当视图放大时,我有哪些选项可以使我的文本不模糊?我应该使用其他东西吗?在 CATextLayer/CALayer 中启用某些东西?欢迎任何想法;)
What would be my options to get my text not blurry when the view is zoomed?
Should I use another thing? enable something in CATextLayer/CALayer? Any idea is welcomed ;)
我使用 CALayer 是因为,正如文档中所建议的那样,CALayer 比 UIViews 轻,而且我有数百个.目前它工作顺利.我尝试过使用 UIWebView 并且我的 CALayer 版本更快;)
I am using CALayers because, as suggested in documentation, CALayers are lighter than UIViews and I have hundreds of them. Currently it works smoothly. I have tried with UIWebView and my CALayer version is faster ;)
提前致谢.
推荐答案
iOS 在放大之前对文本进行了光栅化,这就是它如此模糊的原因.您只需修复 CATextLayer 的一项属性 contentsScale,即可在缩放后获得更高质量的渲染.实现这个 UIScrollViewDelegate 方法:
iOS rasterizes the text before the scale-up occurs, that's why it's so blurry. You only need to fix one property of your CATextLayer, contentsScale, to get a higher quality render after zooming. Implement this UIScrollViewDelegate method:
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView
withView:(UIView *)view
atScale:(float)scale
{
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithBool:YES]
forKey:kCATransactionDisableActions];
uglyBlurryTextLayer.contentsScale = scale;
[CATransaction commit];
}
这告诉图层使用更多像素来渲染文本,并在进行特定更改时禁用核心动画.
This tells the layer to use more pixels to render the text, and it disables Core Animation when making that particular change.
这篇关于用于可缩放 UIScrollView 的矢量绘图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!


大气响应式网络建站服务公司织梦模板
高端大气html5设计公司网站源码
织梦dede网页模板下载素材销售下载站平台(带会员中心带筛选)
财税代理公司注册代理记账网站织梦模板(带手机端)
成人高考自考在职研究生教育机构网站源码(带手机端)
高端HTML5响应式企业集团通用类网站织梦模板(自适应手机端)