在UILabel中绘制一条简单的线

时间:2015-12-09 09:27:06

标签: ios swift uilabel

有没有办法通过UILabel添加简单的线条。我有一个40px高的UILabel,只想在中间水平画一条黑线(20px)。有没有办法在不必创建图像并将其设置为背景的情况下执行此操作?

8 个答案:

答案 0 :(得分:5)

如果您的标签包含文字,那么您可以在标签中使用此类标记。

<强>目标C

NSString *newStringStrike = @"your text";
NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:newStringStrike];
[attributeString addAttribute:NSStrikethroughStyleAttributeName
                        value:@1
                        range:NSMakeRange(0, [attributeString length])];

labelName.attributedText = attributeString;

答案 1 :(得分:3)

是的,有几种方法。例如,您可以将1点高度子视图添加到标签:

Swift 3.0更新:

    let lineView = UIView(
        frame: CGRect(x: 0, 
            y: label.bounds.size.height / 2,
            width: label.bounds.size.width,
            height: 1
        )
    )
    lineView.backgroundColor = UIColor.black
    label.addSubview(lineView)

答案 2 :(得分:2)

您应该能够继承UILabel并覆盖drawRect方法。

答案 3 :(得分:2)

您可以使用UILabel

来完成
  

height = 1 width =根据需要

并将其背景颜色设为黑色并将其放在40px UILabel上。希望这会帮助你。

答案 4 :(得分:1)

@Anil solanki's answer使用Swift 3.1:

let newStringStrike = "your text"
let attributeString = NSMutableAttributedString(string: newStringStrike)
attributedString.addAttribute(NSStrikethroughStyleAttributeName, value: 1, range: NSMakeRange(0, attributedString.length))

labelName.attributedText = attributedString

答案 5 :(得分:1)

迅速4:

 let newStringStrike = "your text"
    let attributeString = NSMutableAttributedString(string: newStringStrike)
    attributeString.addAttribute(NSAttributedStringKey.strikethroughStyle, value: 1, range: NSMakeRange(0, attributeString.length))

    yourLabel = attributeString

答案 6 :(得分:0)

只需创建一个 NSAttributedString 并分配给您的标签

    let newStringStrike = "your text"
    let attributeString = NSMutableAttributedString(string: newStringStrike)
    attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 1, range: NSMakeRange(0, attributeString.length))
    yourLabel.attributedText = attributeString

答案 7 :(得分:0)

根据之前的答案,您可以为 swift 5 定义类似的内容

extension UILabel{
func setTextWithStrike(text: String)
{
    let attributedString = NSMutableAttributedString(string: text)
    attributedString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 1, range: NSMakeRange(0, attributedString.length))
    self.attributedText = attributedString

}

}

然后像这样使用它:

labelWithStike.setTextWithStrike(text: "text with strike")