如何让UILabel显示多行,并在结尾单行显示省略号号

主题 : 如何判断UILabel是否溢出(有省略号)
级别: 新手上路
可可豆: 192 CB
威望: 141 点
在线时间: 1250(时)
发自: Web Page
如何判断UILabel是否溢出(有省略号)&&&
如何判断UILabel是否溢出(有省略号) ,一行的
级别: 侠客
UID: 262440
可可豆: 607 CB
威望: 453 点
在线时间: 203(时)
发自: Web Page
计算文本内容大小 再和 label frame 比较
级别: 精灵王
UID: 27083
发帖: 1233
可可豆: 7120 CB
威望: 9347 点
在线时间: 1423(时)
发自: Web Page
& &&CGSize size = [label.text sizeWithFont:label.font];
用size和label.frame.size比较
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版(iOS)关于UILabel设置了attributedText富文本之后超出显示后没有省略号 - 简书
(iOS)关于UILabel设置了attributedText富文本之后超出显示后没有省略号
很多时候我们绘制UI界面的时候,往往需要使用到富文本,比如一段话设置间距啊,设置不同的字号和颜色等等,但是设置了attributedText 后省略号不显示
1.一开始我没设置间距时是这样显示的:
小鹿优选.png
2.我要设置一段文字的间距(如图)
小鹿优选.PNG
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:model.title];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:4*kHeightScale];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [model.title length])];
self.titleLabel.attributedText = attributedS
3.我们可以发现,设置富文本后文字已经超出显示的部分竟然没有了省略号代替
于是找了下原因,原来我们设置text的时候也会自动设置lineBreakMode,但设置attributedText后,lineBreakMode就会失效,直接切断显示的内容,并且没用省略号代替
一行代码搞定:
感谢devHornet提供了更简便的方案:
设置完 self.titleLabel.attributedText = attributedString之后设置
self.titleLabel.lineBreakMode = NSLineBreakByTruncatingTail
当文字为一行时贴紧上面而不是显示在中间
解决方法是:暴力解决,直接文字拼接上\n换行
我们设置了UILabel的固定高度后,如果里面的内容填不上UILabel的高度,比如只有一行的时候,UILabel会吧文字自动的显示在UILabel的中间,如下图:
小鹿优选.png
这个问题比较好解决,只要拼接上换行好就好了@"\n"
NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString: [[@"
" stringByAppendingString:model.title] stringByAppendingString:@"\n\n"]];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:5*kHeightScale];
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [model.title length])];
self.titleLabel.attributedText= attributedS
小鹿优选.png
------如果你有更好的解决方法,欢迎提出来!!!
我的前进是因为你的支持,谢谢曾经,现在以及未来一直支持关注我的人!谢谢你们!
愿你强大到无需有人宠有人疼,却幸运到有人宠有人疼20955人阅读
早上做了会实验结果如下:
1.N行完全自适应:
&&&&&&& UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
&&&&&&& NSString *txt = @&dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff&;
&&&&&&& testLabel.numberOfLines = 0; ///相当于不限制行数
&&&&&&& testLabel.text =
这样不行,还需要调用 [testLabel sizeToFit];
2.限制在N行内自适应:
&&&&&&& UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
&&&&&&& NSString *txt = @&dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff&;
&&&&&&& testLabel.numberOfLines = 3;&& ////限制在3行内自适应
&&&&&&& testLabel.text =
&&&&&[testLabel sizeToFit];
结果不起作用,全部在一行显示了。
3.为了实现2的需求,需要这么做:
&&&&&&& CGSize maxSize = CGSizeMake(100, 21*3);
&&&&&&& UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 100, 21)];
&&&&&&& NSString *txt = @&dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff&;
&&&&&&& CGSize labelSize = [txt sizeWithFont:testLabel.font constrainedToSize:maxSize lineBreakMode: UILineBreakModeTailTruncation];
&&&&&&& testLabel.frame = CGRectMake(testLabel.frame.origin.x, testLabel.frame.origin.y, labelSize.width, labelSize.height);
&&&&&&& testLabel.text =
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:521331次
积分:6777
积分:6777
排名:第3665名
原创:110篇
转载:125篇
评论:53条
(2)(1)(1)(2)(3)(1)(4)(5)(2)(2)(7)(3)(7)(9)(3)(7)(4)(1)(23)(31)(23)(17)(1)(1)(2)(1)(3)(3)(6)(2)(10)(2)(2)(3)(1)(3)(1)(9)(1)(8)(2)(2)(1)(6)(2)(5)
(window.slotbydup = window.slotbydup || []).push({
id: '4740881',
container: s,
size: '200,200',
display: 'inlay-fix'}

我要回帖

更多关于 超出三行显示省略号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信