0 Replies
      Latest reply on Jul 10, 2019 10:15 AM by azbik999@gmail.com
      azbik999@gmail.com Level 1 Level 1 (0 points)

        I'm trying to implement by-design labels coming from Sketch e.g. I need text styles with font size = 19 and line height = 50. So I ended up using `NSAttributedString` with `NSMutableParagraphStyle` but was stopped by problem with text being sticked to bottom of `UILabel`



        I've already tried to use `lineHeightMultiple` and `lineSpacing` but those didn't give me the line height I wanted so I ended up using `minimumLineHeight` and `maximumLineHeight` equal the same



        Here is my approach to make `NSAttributedString`



            private static func makeAttributedString(
                with attributes: TextAttributes,
                text: String? = nil,
                alignment: NSTextAlignment = .center
            ) -> NSAttributedString {
                let font = UIFont(name: attributes.font.rawValue, size: attributes.fontSize)!
                let paragraph = NSMutableParagraphStyle()
                paragraph.alignment = alignment
                paragraph.paragraphSpacing = attributes.paragraph
                paragraph.minimumLineHeight = attributes.lineHeight // equal 50 in my case
                paragraph.maximumLineHeight = attributes.lineHeight // equal 50 in my case
                let attributes: [NSAttributedStringKey: Any] = [
                    NSAttributedStringKey.paragraphStyle: paragraph,
                    NSAttributedStringKey.foregroundColor: attributes.textColor,
                    NSAttributedStringKey.kern: attributes.kern,
                    NSAttributedStringKey.font: font
                return NSAttributedString(string: text ?? "", attributes: attributes)



        I expect result similar to design




        but actually getting





        Note: setting height constraint to 50 is not applicable because I also need multiline labels but there is the same bug with them