如何在swift 4中跨越打击单元按钮

如何在swift 4中跨越打击单元按钮,swift,strikethrough,Swift,Strikethrough,如何在swift 4中跨越打击单元按钮 目前我正在使用下面的代码来点击按钮 func testString (titleStr : String) -> NSMutableAttributedString { let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: titleStr) attributeString.addAttribute(NSBaselineOf

如何在swift 4中跨越打击单元按钮

目前我正在使用下面的代码来点击按钮

func testString (titleStr : String) -> NSMutableAttributedString {
    let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: titleStr)
    attributeString.addAttribute(NSBaselineOffsetAttributeName, value: 1, range: NSMakeRange(0, attributeString.length ))
    attributeString.addAttribute(NSStrikethroughStyleAttributeName, value: 1, range: NSMakeRange(0, attributeString.length  ))
    attributeString.addAttribute(NSStrikethroughColorAttributeName, value: UIColor.red, range:  NSMakeRange(0, attributeString.length))
    return attributeString
}
并获得如下输出:

如何更改代码以获得这样的输出
屏幕截图:

井NSAttributedString不支持交叉打击。
您必须在UILabel上添加带有十字线图标的ImageView。

您可以使用UIBezierPath实现这一点。在按钮上方创建UIView并设置按钮边缘的约束-鼠标右键单击视图并拖动到按钮:

按住shift键并选择所有边:

然后使用override draw_urect:CGRect方法创建自定义UIView类:

接下来,在故事板中将类设置为CrossedView,然后运行

最后,您将得到预期的结果:


NSAttributedString中没有内置的交叉打击支持。也许在标签/字符串上添加一个视图,视图在其中绘制一个x。没有故事板,我如何实现?嗨,@GowthamS。只需以编程方式创建CrossedView,并将其作为子视图添加到按钮的viewController或cell的superview视图,或其他设置约束4个约束,每个边一个约束,仅此而已。您好,@pacification非常感谢您的工作fine@GowthamS,非常好!请随意接受答案。
final class CrossedView: UIView {

    override func draw(_ rect: CGRect) {
        let path = UIBezierPath()

        path.move(to: .zero)
        path.addLine(to: CGPoint(x: frame.width, y: frame.height))

        path .move(to: CGPoint(x: 0, y: frame.height))
        path.addLine(to: CGPoint(x: frame.width, y: 0))

        UIColor.gray.setStroke()
        path.stroke()
    }

}