【发布时间】:2015-11-07 17:07:50
【问题描述】:
【问题讨论】:
标签: label uilabel strikethrough
【问题讨论】:
标签: label uilabel strikethrough
enoktate 的答案已更新到 Swift 4.2,并作为扩展编写
extension UILabel {
/// Strikes through diagonally
/// - Parameters:
/// - offsetPercent: Improve visual appearance or flip line completely by passing a value between 0 and 1
func diagonalStrikeThrough(offsetPercent: CGFloat = 0.1) {
let linePath = UIBezierPath()
linePath.move(to: CGPoint(x: 0, y: bounds.height * (1 - offsetPercent)))
linePath.addLine(to: CGPoint(x: bounds.width, y: bounds.height * offsetPercent))
let lineLayer = CAShapeLayer()
lineLayer.path = linePath.cgPath
lineLayer.lineWidth = 2
lineLayer.strokeColor = textColor.cgColor
layer.addSublayer(lineLayer)
}
}
【讨论】:
myLabel. diagonalStrikeThrough() 之前致电 myLabel.sizeToFit()
现在回答您似乎为时已晚,但这对未来的 Google 员工可能会有所帮助。 可以通过将 CAShapeLayer 作为子图层添加到标签来实现对角删除线,如下所示:
let linePath = UIBezierPath()
linePath.moveToPoint(CGPointMake(0, yourLabel.bounds.height))
linePath.addLineToPoint(CGPointMake(yourLabel.bounds.width, 0))
let lineLayer = CAShapeLayer()
lineLayer.path = linePath.CGPath
lineLayer.lineWidth = 2
lineLayer.strokeColor = UIColor.lightGrayColor().CGColor
yourLabel.layer.addSublayer(lineLayer)
【讨论】: