美文网首页
Label之根据字数设置多行显示 iOS

Label之根据字数设置多行显示 iOS

作者: 汉时关v | 来源:发表于2016-12-01 13:34 被阅读234次

我在项目当中自定义了一个叫做Notice的视图类,作用是给用户提供一些提示信息。如果是短信息还好,一行就可以搞定了。如果提示的信息太长,一行显示不全的话,就只能多行显示了。

下面摘录代码:

UILabel *label = [[UILabel alloc]init];

[label setBackgroundColor:[[UIColor blackColor] colorWithAlphaComponent:0.8]];

[label setTextColor:[UIColor whiteColor]];

[label setFont:[UIFont systemFontOfSize:POP_ALERT_MSG_SIZE]];

[label setText:msg];

label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;

label.textAlignment = NSTextAlignmentCenter;

label.clipsToBounds = YES;

label.layer.cornerRadius = 5;

label.alpha = 1;

label.numberOfLines = 0;//根据最大行数需求来设置

label.lineBreakMode = NSLineBreakByTruncatingTail;

CGSize maximumLabelSize = CGSizeMake([UIScreen mainScreen].bounds.size.width-20, MAXFLOAT);

//关键语句

CGSize expectSize = [label sizeThatFits:maximumLabelSize];

//别忘了把frame给回label,如果用xib加了约束的话可以只改一个约束的值

label.frame = CGRectMake(0, 0, expectSize.width+ 14, expectSize.height+ 14);

//label.frame = CGRectMake(0, 0, expectSize.width, expectSize.height);//这样是正好塞满,不太好看,可以在宽和高上加一个冗余

[self setFrame:CGRectMake(0, 0, label.frame.size.width, label.frame.size.height)];

[self setCenter:CGPointMake(CGRectGetMidX([UIScreen mainScreen].bounds), CGRectGetMidY([UIScreen mainScreen].bounds) - 40)];

[self addSubview:label];

self.alpha = 0;

相关文章

网友评论

      本文标题:Label之根据字数设置多行显示 iOS

      本文链接:https://www.haomeiwen.com/subject/pyuxmttx.html