@@ -17,11 +17,13 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
1717 open let font : UIFont
1818 open let numberOfLines : Int
1919 open let lineHeight : CGFloat
20+ open let lineBreakMode : NSLineBreakMode
2021
2122 public init ( text: Text ,
2223 font: UIFont = LabelLayoutDefaults . defaultFont,
2324 lineHeight: CGFloat ? = nil ,
2425 numberOfLines: Int = LabelLayoutDefaults . defaultNumberOfLines,
26+ lineBreakMode: NSLineBreakMode = LabelLayoutDefaults . defaultLineBreakMode,
2527 alignment: Alignment = LabelLayoutDefaults . defaultAlignment,
2628 flexibility: Flexibility = LabelLayoutDefaults . defaultFlexibility,
2729 viewReuseId: String ? = nil ,
@@ -31,13 +33,15 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
3133 self . numberOfLines = numberOfLines
3234 self . font = font
3335 self . lineHeight = lineHeight ?? font. lineHeight
36+ self . lineBreakMode = lineBreakMode
3437 super. init ( alignment: alignment, flexibility: flexibility, viewReuseId: viewReuseId, config: config)
3538 }
3639
3740 init ( attributedString: NSAttributedString ,
3841 font: UIFont = LabelLayoutDefaults . defaultFont,
3942 lineHeight: CGFloat ? = nil ,
4043 numberOfLines: Int = LabelLayoutDefaults . defaultNumberOfLines,
44+ lineBreakMode: NSLineBreakMode = LabelLayoutDefaults . defaultLineBreakMode,
4145 alignment: Alignment = LabelLayoutDefaults . defaultAlignment,
4246 flexibility: Flexibility = LabelLayoutDefaults . defaultFlexibility,
4347 viewReuseId: String ? = nil ,
@@ -48,13 +52,15 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
4852 self . numberOfLines = numberOfLines
4953 self . font = font
5054 self . lineHeight = lineHeight ?? font. lineHeight
55+ self . lineBreakMode = lineBreakMode
5156 super. init ( alignment: alignment, flexibility: flexibility, viewReuseId: viewReuseId, viewClass: viewClass ?? Label . self, config: config)
5257 }
5358
5459 init ( string: String ,
5560 font: UIFont = LabelLayoutDefaults . defaultFont,
5661 lineHeight: CGFloat ? = nil ,
5762 numberOfLines: Int = LabelLayoutDefaults . defaultNumberOfLines,
63+ lineBreakMode: NSLineBreakMode = LabelLayoutDefaults . defaultLineBreakMode,
5864 alignment: Alignment = LabelLayoutDefaults . defaultAlignment,
5965 flexibility: Flexibility = LabelLayoutDefaults . defaultFlexibility,
6066 viewReuseId: String ? = nil ,
@@ -65,6 +71,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
6571 self . numberOfLines = numberOfLines
6672 self . font = font
6773 self . lineHeight = lineHeight ?? font. lineHeight
74+ self . lineBreakMode = lineBreakMode
6875 super. init ( alignment: alignment, flexibility: flexibility, viewReuseId: viewReuseId, viewClass: viewClass ?? Label . self, config: config)
6976 }
7077
@@ -74,6 +81,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
7481 font: UIFont = LabelLayoutDefaults . defaultFont,
7582 lineHeight: CGFloat ? = nil ,
7683 numberOfLines: Int = LabelLayoutDefaults . defaultNumberOfLines,
84+ lineBreakMode: NSLineBreakMode = LabelLayoutDefaults . defaultLineBreakMode,
7785 alignment: Alignment = LabelLayoutDefaults . defaultAlignment,
7886 flexibility: Flexibility = LabelLayoutDefaults . defaultFlexibility,
7987 viewReuseId: String ? = nil ,
@@ -83,6 +91,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
8391 font: font,
8492 lineHeight: lineHeight,
8593 numberOfLines: numberOfLines,
94+ lineBreakMode: lineBreakMode,
8695 alignment: alignment,
8796 flexibility: flexibility,
8897 viewReuseId: viewReuseId,
@@ -93,6 +102,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
93102 font: UIFont = LabelLayoutDefaults . defaultFont,
94103 lineHeight: CGFloat ? = nil ,
95104 numberOfLines: Int = LabelLayoutDefaults . defaultNumberOfLines,
105+ lineBreakMode: NSLineBreakMode = LabelLayoutDefaults . defaultLineBreakMode,
96106 alignment: Alignment = LabelLayoutDefaults . defaultAlignment,
97107 flexibility: Flexibility = LabelLayoutDefaults . defaultFlexibility,
98108 viewReuseId: String ? = nil ,
@@ -102,6 +112,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
102112 font: font,
103113 lineHeight: lineHeight,
104114 numberOfLines: numberOfLines,
115+ lineBreakMode: lineBreakMode,
105116 alignment: alignment,
106117 flexibility: flexibility,
107118 viewReuseId: viewReuseId,
@@ -116,7 +127,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
116127 }
117128
118129 private func textSize( within maxSize: CGSize ) -> CGSize {
119- var size = text. textSize ( within: maxSize, font: font)
130+ var size = text. textSize ( within: maxSize, font: font, lineBreakMode : lineBreakMode )
120131 if numberOfLines > 0 {
121132 let maxHeight = ( CGFloat ( numberOfLines) * lineHeight) . roundedUpToFractionalPoint
122133 if size. height > maxHeight {
@@ -134,6 +145,7 @@ open class LabelLayout<Label: UILabel>: BaseLayout<Label>, ConfigurableLayout {
134145 open override func configure( view label: Label ) {
135146 config ? ( label)
136147 label. numberOfLines = numberOfLines
148+ label. lineBreakMode = lineBreakMode
137149 label. font = font
138150 switch text {
139151 case . unattributed( let text) :
@@ -155,6 +167,7 @@ public class LabelLayoutDefaults {
155167 public static let defaultNumberOfLines = 0
156168 public static let defaultFont = UILabel ( ) . font ?? UIFont . systemFont ( ofSize: 17 )
157169 public static let defaultAlignment = Alignment . topLeading
170+ public static let defaultLineBreakMode = NSLineBreakMode . byTruncatingTail
158171 public static let defaultFlexibility = Flexibility . flexible
159172}
160173
0 commit comments