NSAttributed Text с линией под некоторым углом в iOS - PullRequest
0 голосов
/ 25 марта 2019

Я хочу провести зачеркнутую линию в swift 4, как показано на рисунке ниже.

enter image description here

Я провел зачеркнутую линию, как показано наниже изображение с использованием следующего кода.

enter image description here

func strikeThrough(_ color: UIColor) -> NSAttributedString {
    let attributeString: NSMutableAttributedString = NSMutableAttributedString(string: self)
    let textRange = NSRange(location: 0, length: attributeString.length)
    attributeString.addAttribute(NSAttributedString.Key.strikethroughStyle, value: 1, range: textRange)
    attributeString.addAttribute(NSAttributedString.Key.baselineOffset, value: 0, range: textRange)
    attributeString.addAttribute(NSAttributedString.Key.foregroundColor, value: UIColor.lightGray, range: textRange)
    attributeString.addAttribute(NSAttributedString.Key.strikethroughColor, value: color, range: textRange)

    return attributeString
}

Любые предложения, как я могу нарисовать наклонную линию над текстом.Если возможно, дайте мне решение с использованием Core Graphics.

1 Ответ

2 голосов
/ 25 марта 2019

Используйте UIBezierPath со своей UILabel, назовем его меткой:

        var aPath = UIBezierPath()
        aPath.moveToPoint(CGPoint(x: label.frame.origin.x , y:label.frame.origin.y  - 10)
        aPath.addLineToPoint(CGPoint(x: label.frame.origin.x + label.frame.size.width, y: label.frame.origin.y + label.frame.size.height + 10))
        aPath.closePath()
        UIColor.redColor().set()
        aPath.stroke()

Не стесняйтесь играть с источниками очков, чтобы получить желаемый результат.Также играйте с label.layer.addSublayer (aPath)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...