feat:Text add truncateAt

This commit is contained in:
pengfei.zhou
2020-04-27 18:46:39 +08:00
committed by osborn
parent a23aa8df0f
commit fdff5af3d9
11 changed files with 118 additions and 2 deletions

View File

@@ -50,6 +50,7 @@ @implementation DoricTextNode
- (UILabel *)build {
return [[[DoricTextView alloc] init] also:^(DoricTextView *it) {
it.textAlignment = NSTextAlignmentCenter;
[self ensureParagraphStyle];
}];
}
@@ -78,7 +79,7 @@ - (void)blendView:(UILabel *)view forPropName:(NSString *)name propValue:(id)pro
}
if (self.paragraphStyle) {
self.paragraphStyle.alignment = alignment;
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:view.text];
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:view.text ?: @""];
[attributedString addAttribute:NSParagraphStyleAttributeName value:self.paragraphStyle range:NSMakeRange(0, [attributedString length])];
view.attributedText = attributedString;
} else {
@@ -133,6 +134,27 @@ - (void)blendView:(UILabel *)view forPropName:(NSString *)name propValue:(id)pro
documentAttributes:nil
error:nil];
view.attributedText = attStr;
} else if ([name isEqualToString:@"truncateAt"]) {
[prop also:^(NSNumber *truncateAt) {
[[self ensureParagraphStyle] also:^(NSMutableParagraphStyle *it) {
switch (truncateAt.integerValue) {
case 1:
it.lineBreakMode = NSLineBreakByTruncatingMiddle;
break;
case 2:
it.lineBreakMode = NSLineBreakByTruncatingHead;
break;
case 3:
it.lineBreakMode = NSLineBreakByClipping;
break;
default:
it.lineBreakMode = NSLineBreakByTruncatingTail;
break;
}
[self reloadParagraphStyle];
}];
}];
} else {
[super blendView:view forPropName:name propValue:prop];
}
@@ -142,6 +164,7 @@ - (NSMutableParagraphStyle *)ensureParagraphStyle {
if (self.paragraphStyle == nil) {
self.paragraphStyle = [NSMutableParagraphStyle new];
self.paragraphStyle.alignment = self.view.textAlignment;
self.paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;
}
return self.paragraphStyle;
}