UILabel为基线以下高字符的文本加下划线

时间:2017-08-21 08:48:21

标签: ios text uilabel nsattributedstring underline

我想为UILabel制作带下划线的文字。现在,我正在使用:

self.lbValue.attributedText = NSAttributedString(string: value, attributes: 
    [NSUnderlineStyleAttributeName : NSUnderlineStyle.styleSingle.rawValue])

它确实在文本下面画了一行,没问题。但是,当角色很高(并且低于基线)时,它会裁剪线条并在线条之间留下难看的空白区域,如下所示:

high characters

如你所见,角色下方有一个小点。这是我的下划线所在的地方。如何制作实线并重叠字符?像这样:

Expected output

我尝试过其他风格(破折号,点,粗,实......)它们都没有像我预期的那样工作。

2 个答案:

答案 0 :(得分:1)

这也可以通过其他更好的方式实现。我将向您展示一个示例 - :

1)添加一个标签,并在该标签下面添加UIView(它将作为下划线)。

2)提供适当的约束。

检查图片下方 - :

标签限制 - :

enter image description here

下划线视图约束 - :

enter image description here

现在在控制器类中添加<li><a onclick="cart.add('<?php echo $product['product_id']; ?>','1','<?php echo $related_option_value['name']; ?>');" class="btn-secondary btn-buy"><i class="fa fa-shopping-cart"></i><?php echo $button_cart; ?></a></li> 。此外,还为Outlets下划线添加width NSLayoutConstraint

我认为您的标签UIView可以动态更改,我们会给下划线标签(宽度)一个 intrinsicContentSize 。这会根据width中的内容调整下划线标签width

控制器类 - :

UILabel

<强>输出 - :

enter image description here

enter image description here

希望对您有所帮助。

答案 1 :(得分:0)

我建议您添加一个标签,其高度为1,宽度等于标签的宽度,并将其固定在内容标签下方(将标签的背景颜色设置为所需的下划线颜色)。

这可能不是您期望的解决方案,但它将解决该要求。 :)