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