【问题标题】:UILabel underline text with high characters below baselineUILabel 下划线文本,高字符低于基线
【发布时间】:2018-01-29 06:38:17
【问题描述】:

我想为UILabel 添加下划线文本。目前,我正在使用:

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

它确实在文本下方画了一条线,没关系。但是,当字符很高(并且低于基线)时,它会裁剪线条并在线条之间产生难看的空白,如下所示:

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

我尝试了其他样式(破折号、圆点、粗点、实线...),它们都没有像我预期的那样工作。

【问题讨论】:

    标签: ios text uilabel nsattributedstring underline


    【解决方案1】:

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

    1) 添加标签,并在该标签下方添加 UIView(将用作下划线)。

    2) 提供适当的约束。

    检查下面的图片-:

    标签约束-:

    下划线视图约束-:

    现在在控制器类中添加Outlets。并且,还要添加width NSLayoutConstraint 作为下划线UIView

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

    控制器类-:

    import UIKit
    
    class UnderlineViewController: UIViewController {
    
    
        @IBOutlet weak var myLabel: UILabel!
        @IBOutlet weak var underLineWidth: NSLayoutConstraint!
        @IBOutlet weak var underline: UIView!
    
    
        override func viewDidLoad() {
            super.viewDidLoad()
            // SET TEXT FOR LABEL
            myLabel.text = "What's next in Game Of Thrones"
            // MAKE UNDERLINE VIEW WIDTH INTTRINSIC
            underLineWidth.constant = myLabel.intrinsicContentSize.width
            // Do any additional setup after loading the view.
    
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    }
    

    输出-:

    希望对您有所帮助。

    【讨论】:

    • 哈哈,这是一个 hack =]] 我不介意,但我期待一些与文本绘图相关的东西。感谢您的回答:) 另外,如果是UITextViewUIButtonUISegmentControl,您会怎么做?你不能,是吗? :)
    • @Eddie 是的,你可以这么说,它甚至不适用于多行标签,因为我们需要使用你有问题的东西。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 2020-08-21
      相关资源
      最近更新 更多