美文网首页
iOS设置行高后,单行文字底部出现空隙

iOS设置行高后,单行文字底部出现空隙

作者: 迷路的字母C | 来源:发表于2019-08-12 14:14 被阅读0次

    iOS使用以下代码设置行高以后,会发现,如果文字是单行中文时,无论是用NSAttributedString的尺寸计算还是用UILabel的sizeToFit方式,所获取的尺寸信息,都会使UILabel在展示上出现异常——底部出现一个空白。

    NSMutableDictionary *attrInfo = [[NSMutableDictionary alloc] init];
    NSMutableParagraphStyle *pStyle = [[NSMutableParagraphStyle alloc] init];
    [pStyle setLineSpacing:20];
    [attrInfo setObject:pStyle forKey:NSParagraphStyleAttributeName];
    [attrInfo setObject:[UIFont systemFontOfSize:20] forKey:NSFontAttributeName];
    

    可以用判断单行还是多行去决定是否设置行高的方式解决这个问题。

    用xib设置一个UILabel的attributedString,发现单行的情况并没有这个问题。后来对比了,才发现根本问题不是ParagraphStyle的问题,而是font的问题。xib里面的字体是PingFangSC-Regular。但是刚才代码里面的是SFUIDisplay。替换了字体以后显示正常了。

    曾经,我以为这样就完事了,完美解决,只要是iOS9之后的设备都没有问题了。知道我试图给某一段文字加个颜色。比如像下面这样

    [attrString01 addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 1)];
    

    然后一切都回到了原点。后来在xib里面实验,发现,xib里面也是这样的,换了一些中文字体以后,这个问题依然存在。。。。。这应该是UILabel绘制排版引起的,目前在UITextView上没发现这个问题。

    感觉还是开始的方法靠谱些。

    相关文章

      网友评论

          本文标题:iOS设置行高后,单行文字底部出现空隙

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