UILabel正常显示省略号的做法

来源:互联网 发布:碧空尽知什么 编辑:程序博客网 时间:2024/05/02 21:20

1.普通的UILabel,通过如下设置文字过长显示不完会显示省略号:

UILabel *lab = [[UILabel alloc] init];lab.frame = CGRectMake(0, 0, 100, 20);lab.numberOfLines = 2;lab.lineBreakMode = NSLineBreakByTruncatingTail;lab.text = @"编译器自动管理内存地址,让程序员更加专注于APP的业务。";

2.带属性attributedText的label,比如带文字间隔功能的Label。在设置完值后需要重新设置一下。
self.titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;
因为label设置了属性,导致lineBreakMode失效了,不能正常获取到行的高度。

-(void)viewDidLoad{    [super viewDidLoad];     UILabel *lab = [[UILabel alloc] init];     lab.frame = CGRectMake(0, 0, 100, 20);     lab.numberOfLines = 2;     lab.lineBreakMode = NSLineBreakByTruncatingTail;     NSString *str = @"编译器自动管理内存地址,让程序员更加专注于APP的业务。编译器自动管理内存地址,让程序员更加专注于APP的业务。编译器自动管理内存地址,让程序员更加专注于APP的业务。”;     NSMutableAttributedString * attributedContentStr = [NSMutableAttributedString           attributedStringWithString:str Font: [UIFont systemFontOfSize:17] LineSpacing:3 MaxWidth:(kScreenWidth - 120)];     lab.attributedText=attributedContentStr;     // 因为label设置了属性,导致lineBreakMode失效了,不能正常获取到行的高度。所以需要重新设置一下才能正常显示省略号。     lab.lineBreakMode = NSLineBreakByTruncatingTail;     [self.view addSubview:lab];}/** *  设置带有行间距的文本 * *  @param str         文本 *  @param font        字号 *  @param lineSpacing 行间距 * *  @return 属性文本 */+(NSMutableAttributedString *)attributedStringWithString:(NSString *)str Font:(UIFont *)font LineSpacing:(NSInteger)lineSpacing MaxWidth:(CGFloat)w{    if (!str) {        str=@"";    }    NSDictionary *dict = @{NSFontAttributeName: font};    CGSize size = [str sizeWithAttributes:dict];       NSMutableAttributedString * attributeTitleStr = [[NSMutableAttributedString alloc] initWithString:str];    [attributeTitleStr addAttribute:NSFontAttributeName value:font range:NSMakeRange(0, attributeTitleStr.length)];        // 如果大于一行,设置行间距    if(size.width>w){        NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];        [paragraphStyle1 setLineSpacing:lineSpacing];        [attributeTitleStr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [attributeTitleStr length])];    }    return attributeTitleStr;}


0 0
原创粉丝点击