Преобразовать высоту линии эскиза в свойство ios line 'height кратно'

введите описание изображения здесь

Мой дизайнер отправил мне файл эскиза с надписью "Высота линии: 22" для этикетки. Как я могу добиться этого в Xcode Interface Builder. Есть ли способ определить эту высоту строки, используя код или UI Builder.

3 ответа

@bbjay поставил меня на верный путь.

Если вы хотите получить точный результат Sketch, формула:

paragraphStyle .lineSpacing = sketchLineHeight - font.lineHeight

При условии, что шрифт был дан sketchFontSize

Я нашел следующую формулу, чтобы хорошо работать для меня. Он преобразует высоту линии эскиза в межстрочный интервал iOS:

lineSpacing = sketchLineHeight - sketchFontSize - (font.lineHeight - font.pointSize)

В коде для вашего случая это будет:

let font = UIFont.systemFont(ofSize: 18) // or whatever font you use
textLabel.font = font
let attributedString = NSMutableAttributedString(string: "your text")
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 22 - 18 - (font.lineHeight - font.pointSize)
attributedString.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSMakeRange(0, attributedString.length))
textLabel.attributedText = attributedString

Высота линии исходит из CSS, поэтому у вашего дизайнера должен быть опыт веб-дизайнера. На мобильных платформах мы указываем не высоту строки, а межстрочный интервал.

В целом NSMutableParagraphStyle предлагает возможности для изменения многострочных меток для iOS.

NSMutableParagraphStyle имеет свойство MaximumLineHeight, но оно будет устанавливать максимальную высоту строки только на определенное значение, если содержание метки будет превышать определенное значение.

Чтобы настроить это в IB, вам нужно добавить метку и изменить Text собственность на Attributed, Затем щелкните значок стиля абзаца и установите межстрочный интервал для метки. Глядя на дизайн, это примерно 2 точки межстрочного интервала, что вам нужно. Вы можете либо попросить своего дизайнера предоставить вам атрибут межстрочного интервала, либо попытаться найти правильное значение межстрочного интервала путем случайного опробования различных значений.

В раскадровке используйте Atributed стиль UILabel. Ниже приведен пример с высотой 2,5 строки

введите описание изображения здесь

Другие вопросы по тегам