Приписанная строка не принимает значение керна должным образом - PullRequest
0 голосов
/ 23 января 2019

Кернинг не работает, если я передаю -0,36, если я беру снимок экрана с iPhone и сравниваю с дизайном, строка не соответствует длине.

func addCharacterSpacing(kernValue: Double = 1.15) {
    if let labelText = text, labelText.count > 0 {
        let attributedString = NSMutableAttributedString(string: labelText)
        attributedString.addAttribute(NSAttributedString.Key.kern, value: kernValue, range: NSRange(location: 0, length: attributedString.length - 1))
        attributedText = attributedString
    }
}

1 Ответ

0 голосов
/ 29 января 2019

Наконец закончилось создание функции @discardableResult, которая точно соответствует снимку экрана с iPhone и сравнивает с дизайном.Пройдите parms соответственно.

@discardableResult func applyAttributesWithKerning(_ text: String, font:UIFont, lineSpace: CGFloat, charSpace: CGFloat, color:UIColor) -> NSMutableAttributedString {

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = lineSpace

    var attrs: [NSAttributedString.Key: Any] = [NSAttributedString.Key.paragraphStyle: paragraphStyle]
    attrs[NSAttributedString.Key.kern] = charSpace
    attrs[NSAttributedString.Key.font] = font
    attrs[NSAttributedString.Key.foregroundColor] = color
    let boldString = NSMutableAttributedString(string:text, attributes: attrs)
    append(boldString)

    return self
}
...