美文网首页
解决文字缩放动画时字体模糊问题

解决文字缩放动画时字体模糊问题

作者: 西孟___ | 来源:发表于2018-09-29 12:40 被阅读127次

    首先,这里说的不是textLayer.contentsScale = [UIScreen mainScreen].scale;问题。
    帮朋友做一个视频中添加文字,并带有文字旋转缩放动效时,遇到了rootLayer放大时,加载在其上面的textLayer会模糊,特别是在放大倍数很大的情况下,模糊会很严重。查了一些资料,也没个头绪,后来就考虑把文字字体设置很大。
    先来看下面的代码

    CGFloat fontSize = [self adjustedFontSizeForText:textModel.textContent];
    

    这是来算在某个区域里自适应的文字字体,当然除了这个值,我们还会限制最大字号。

    CGFloat scaleValue = fontSize/textModel.textFontSize;
    

    这个是后面做缩放动画要用的比例因子

    CGSize contentSize = [textModel.textContent boundingRectWithSize:CGSizeMake(kContendWidth, MAXFLOAT)
                                                                      options:NSStringDrawingUsesLineFragmentOrigin
                                                                   attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:textModel.textFontSize]}
                                                                      context:nil].size;
    

    计算textLayer宽高,以便后面实例化textLayer。

    一组文字,处理组合缩放动画,如果直接按scaleValue去缩放的话,放大倍数越大越模糊,后来想了办法把字体设置到最大,比如最大的字体为120pt,我们可以加一个字体缩放比例因子

    NSInteger scaleFactor = 120/textModel.textFontSize;
    

    然后上面的处理也要改一下

            CGFloat scaleValue = fontSize/textModel.textFontSize/scaleFactor;
            CGSize contentSize = [textModel.textContent boundingRectWithSize:CGSizeMake(kContendWidth*scaleFactor, MAXFLOAT)
                                                                      options:NSStringDrawingUsesLineFragmentOrigin
                                                                   attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:textModel.textFontSize]}
                                                                      context:nil].size;
            textLayer.fontSize = textModel.textFontSize* scaleFactor;
    

    这样的话,因为字体虽然变大了,但是scaleValue也相应的变小了,所以最终缩放动画不会受到影响,同时由于计算textLayer宽高时宽度也相应的变化了,所以不会出现单纯改变字体大小引起的换行问题。

    最后得注意一点,我在实验中把这个scaleFactor设置了一个很大的数,会导致app运行中崩溃,所以这个因子尽量不要太大,设置一个合适的就行,后面看看有没有其他解决办法,如果小伙伴们有其他解决CATextLayer放大时模糊的方法,也可以告诉我。

    相关文章

      网友评论

          本文标题:解决文字缩放动画时字体模糊问题

          本文链接:https://www.haomeiwen.com/subject/yfyvoftx.html