美文网首页
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设置行高后,单行文字底部出现空隙

    iOS使用以下代码设置行高以后,会发现,如果文字是单行中文时,无论是用NSAttributedString的尺寸计...

  • iOS如何正确设置行高,行间距

    设置行间距为10 设置行高为30 备注 设置了行间距后,文字是单行时也会有一个行间距。所以使用设置行高的方式设置行...

  • 省略号样式

    1.单行文字 主要后面三行 2.多行文字省略号,指定3行后出现省略号

  • 文本样式

    行高与字体简写 line-height = height,可设置单行文字垂直居中line-height默认值1.3...

  • 再看 line-height

    如果没有字体,只设置行高 块级元素设置行高 内联元素设置行高 行内块元素设置行高 行高起作用的前提是有文字存在 ,...

  • 垂直居中的实现方式

    记性不行隔几天拿出来看一眼 line-height方法 适合单行文字的垂直居中,只需要将包含文字元素的容器行高设置...

  • Taro ios 键盘隐藏空白

    ios中键盘隐藏,底部出现空白,导致点击事件失效。原因:当设置adjustPosition={true}时候,键盘...

  • css设置文本超出多行隐藏显示三个点

    单行设置宽度 , 多行设置宽高

  • iOS常用技巧

    1、系统版本判断 2、iOS 11后获取导航栏和底部高度的正确姿势 3、在iOS中如何正确的实现行间距与行高 1、...

  • 文字行高设置,单行文字在父元素中居中

    设置行高的属性:line-height比如一段文本: 这里绿色框之间的距离,为行间距,行间距 = 行高 - 字体大...

网友评论

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

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