1414@interface SVGAContentLayer ()
1515
1616@property (nonatomic , strong ) NSArray <SVGAVideoSpriteFrameEntity *> *frames;
17+ @property (nonatomic , assign ) NSTextAlignment textLayerAlignment;
1718
1819@end
1920
@@ -25,6 +26,7 @@ - (instancetype)initWithFrames:(NSArray *)frames {
2526 self.backgroundColor = [UIColor clearColor ].CGColor ;
2627 self.masksToBounds = NO ;
2728 _frames = frames;
29+ _textLayerAlignment = NSTextAlignmentCenter;
2830 [self stepToFrame: 0 ];
2931 }
3032 return self;
@@ -68,7 +70,20 @@ - (void)setFrame:(CGRect)frame {
6870 for (CALayer *sublayer in self.sublayers ) {
6971 if ([sublayer isKindOfClass: [CATextLayer class ]]) {
7072 CGRect frame = sublayer.frame ;
71- frame.origin .x = (self.frame .size .width - sublayer.frame .size .width ) / 2.0 ;
73+ switch (self.textLayerAlignment ) {
74+ case NSTextAlignmentLeft:
75+ frame.origin .x = 0.0 ;
76+ break ;
77+ case NSTextAlignmentCenter:
78+ frame.origin .x = (self.frame .size .width - sublayer.frame .size .width ) / 2.0 ;
79+ break ;
80+ case NSTextAlignmentRight:
81+ frame.origin .x = self.frame .size .width - sublayer.frame .size .width ;
82+ break ;
83+ default :
84+ frame.origin .x = (self.frame .size .width - sublayer.frame .size .width ) / 2.0 ;
85+ break ;
86+ }
7287 frame.origin .y = (self.frame .size .height - sublayer.frame .size .height ) / 2.0 ;
7388 sublayer.frame = frame;
7489 }
@@ -92,4 +107,34 @@ - (void)setDynamicHidden:(BOOL)dynamicHidden {
92107 self.hidden = dynamicHidden;
93108}
94109
110+ - (void )resetTextLayerProperties : (NSAttributedString *)attributedString {
111+ NSDictionary *textAttrs = (id )[attributedString attributesAtIndex: 0 effectiveRange: nil ];
112+ NSParagraphStyle *paragraphStyle = textAttrs[NSParagraphStyleAttributeName ];
113+ if (paragraphStyle == nil ) {
114+ return ;
115+ }
116+ if (paragraphStyle.lineBreakMode == NSLineBreakByTruncatingTail) {
117+ self.textLayer .truncationMode = kCATruncationEnd ;
118+ [self .textLayer setWrapped: NO ];
119+ }
120+ else if (paragraphStyle.lineBreakMode == NSLineBreakByTruncatingMiddle) {
121+ self.textLayer .truncationMode = kCATruncationMiddle ;
122+ [self .textLayer setWrapped: NO ];
123+ }
124+ else if (paragraphStyle.lineBreakMode == NSLineBreakByTruncatingHead) {
125+ self.textLayer .truncationMode = kCATruncationStart ;
126+ [self .textLayer setWrapped: NO ];
127+ }
128+ else {
129+ self.textLayer .truncationMode = kCATruncationNone ;
130+ [self .textLayer setWrapped: YES ];
131+ }
132+ if (paragraphStyle.alignment == NSTextAlignmentNatural) {
133+ self.textLayerAlignment = NSTextAlignmentCenter;
134+ }
135+ else {
136+ self.textLayerAlignment = paragraphStyle.alignment ;
137+ }
138+ }
139+
95140@end
0 commit comments