Я хочу нарисовать черту через линию в Swift 4, как показано на рисунке ниже.
Я нарисовал перечеркнутую линию, как показано на изображении ниже, используя следующий код.
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.





Используйте 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)
Когда мы используем кадры, он ведет себя неправильно, когда мы поворачиваем экран.
Приведенный выше пример дает вам представление. Нет упоминания о повороте экрана и т. д. В любом случае добавление в качестве подслоя должно решить эту проблему. Смотрите обновленный ответ.
Вы можете использовать developer.apple.com/documentation/uikit/nslayoutmanager/… и образец (для подчеркивания, но логика его использования такая же: stackoverflow.com/questions/55288142/…) и настроить его в соответствии с вашими потребностями.