求助,swift中怎么让uilabel宽度自适应自适应高度

如何使用swift实现自适应屏幕_百度知道求助,swift中怎么让UILabel自适应高度_百度知道Pages: 1/3
主题 : iOS8下UILabel如何自适应高度(自动换行)?
级别: 新手上路
可可豆: 27 CB
威望: 18 点
在线时间: 113(时)
发自: Web Page
iOS8下UILabel如何自适应高度(自动换行)?&&&
在iOS8以下适配UILabel的方法我是这样的:
UILabel *
& & label.text = @"本店于十一期间特推出一系列优惠,限时限量敬请选购!沙发:钻石品质,首领风范!床垫:华贵典雅,彰显时尚!尊贵而不失奢华,典雅却不失自然!温馨和浪漫的生活,我们与你一同创造!";
& & label.numberOfLines = 0;
& & label.lineBreakMode = NSLineBreakByWordWrapping;
& & CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
& & label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, size.height);
这种方法在iOS5,6,7都有效,所以不需要格外的去区分iOS6和7用不同方法适配。
但是最近升级了xcode6.1和iOS8.1,项目中UILabel的换行却不行了,尝试了很多方法,都不能完全适配,比如我上面那段文字,我只能适配到“典雅却不失自然!”后面的被截掉了,十分郁闷。有没有道友在Label换行上不出问题的,网上的那些方法我都试了,无效。
比如:
NSDictionary *dic = [NSDictionary dictionaryWithObjectsAndKeys:[UIFont systemFontOfSize:14],NSFontAttributeName, nil];
size = [label.text&boundingRectWithSize:CGSizeMake(_headerView.lblPromotion.frameSizeWidth, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
NSLog(@"width : %f,height : %f",size.width,size.height);
这段代码本是iOS7的方法,我测试过,最后一句话被截掉了。
希望高手能够指点一二,谢谢了。
级别: 侠客
可可豆: 269 CB
威望: 168 点
在线时间: 609(时)
发自: Web Page
我测试过了没有你说的问题啊。。。可以都显示出啊来啊UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 300, 100)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
label.text = @&本店于十一期间特推出一系列优惠,限时限量敬请选购!沙发:钻石品质,首领风范!床垫:华贵典雅,彰显时尚!尊贵而不失奢华,典雅却不失自然!温馨和浪漫的生活,我们与你一同创造!&;
CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
label.frame =CGRectMake(0, 100, 300, size.height);
label.font = [UIFont systemFontOfSize:14];
[self.view addSubview:label];
级别: 新手上路
可可豆: 27 CB
威望: 18 点
在线时间: 113(时)
发自: Web Page
我上面那段文字复制的不标准,你试试每个感叹号后面加一个换行符。意思就是我这段文字的显示效果是一句换一行!
级别: 新手上路
可可豆: 0 CB
威望: 3 点
在线时间: 7(时)
发自: Web Page
测试过,没问题
UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 300, 100)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordW
label.text = @&本店于十一期间特推出一系列优惠,限时限量敬请选购!沙发:钻石品质,首领风范!床垫:华贵典雅,彰显时尚!尊贵而不失奢华,典雅却不失自然!温馨和浪漫的生活,我们与你一同创造!&;
CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];
label.frame =CGRectMake(10, 100, 300, size.height);
label.font = [UIFont systemFontOfSize:14];
[self.view addSubview:label];
级别: 新手上路
可可豆: 27 CB
威望: 18 点
在线时间: 113(时)
发自: Web Page
谢谢,我也测试过,应该是我的问题,代码应该没问题,我觉得是我运用的场景哪里出了问题造成的。不过还是谢谢你了!
级别: 侠客
可可豆: 269 CB
威望: 168 点
在线时间: 609(时)
发自: Web Page
加了也没问题啊
级别: 新手上路
可可豆: 70 CB
威望: 73 点
在线时间: 231(时)
发自: Web Page
解决了么,我刚也遇到相同得问题了。
级别: 新手上路
可可豆: 21 CB
威望: 21 点
在线时间: 52(时)
发自: Web Page
遇到同样的问题,改成NSLineBreakByCharacterWrapping就可以换行了,好坑的问题,原因还不知道。
级别: 新手上路
可可豆: 1 CB
威望: 1 点
在线时间: 18(时)
发自: Web Page
回 7楼(neufeng) 的帖子
初始的宽度 改小点 再试看看
级别: 新手上路
可可豆: 1 CB
威望: 1 点
在线时间: 51(时)
发自: Web Page
直接 sizeToFit 多好啊
Pages: 1/3
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版iOS开发 UILabel 自适应高度和UILabel文字添加下划线
iOS开发 UILabel 自适应高度和UILabel文字添加下划线
总结一些常规行的知识点总结一些常规行的知识点1 Label的自适应高度,重点在于对于内容SIZE的统计计算,字体的大小和文字显示的宽度一定也要注意,否则高度就不够准确。- (void)viewDidLoad{& & [super viewDidLoad];&& && & float cellH&& &UIFont *font&= [UIFont systemFontOfSize:18];NSString&*lableContent =&@"《X战警》(X-Men)由美国漫威(Marvel)出品,讲述了这个世界上人类中的一小部分存在基因变异,这部分变种人拥有各种各样的超能力。而世界对于这样一群异类产生了恐惧。万磁王为了争取更多变种人的权利,他聚集了一批部下不断针对人类进行破坏。而X教授致力于人类与变种人之间和谐生存,他创办了X学院,收取变种人学生,教导他们知识,让他们能合理运用自己的能力。培养他们成为X战警,保卫人类与变种人。";& & CGSize lableSize = [lableContent sizeWithFont:font constrainedToSize:CGSizeMake(300, 800) lineBreakMode:NSLineBreakByTruncatingTail];& & UILabel *lable = [[UILabel alloc]initWithFrame:CGRectMake(10, 10, lableSize.width, lableSize.height)];& & lable.backgroundColor = [UIColor grayColor];& & lable.font =& & lable.text = lableC& & lable.numberOfLines = 0;&& && & cellHeight += lable.frame.size.& & cellHeight +=30;&& && & UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];& & //button.frame = CGRectMake(20, lableSize.height+20, 50, 30);& & button.frame = CGRectMake(20, 20+lable.frame.size.height, 50, 30);& & [button setTitle:@"YES" forState:UIControlStateNormal];&& && & [self.view addSubview:button];& & [self.view addSubview:lable];&& && & float height = 10+lable.frame.size.height + button.frame.size.height +20;& & NSLog(@"cell's height is %f",height);}2 添加一些文字省略的方式说明label.lineBreakMode = NSLineBreakByCharW以字符为显示单位显示,后面部分省略不显示。label.lineBreakMode = NSLineBreakByC剪切与文本宽度相同的内容长度,后半部分被删除。label.lineBreakMode = NSLineBreakByTruncatingH前面部分文字以……方式省略,显示尾部文字内容。label.lineBreakMode = NSLineBreakByTruncatingM中间的内容以……方式省略,显示头尾的文字内容。label.lineBreakMode = NSLineBreakByTruncatingT结尾部分的内容以……方式省略,显示头的文字内容。label.lineBreakMode = NSLineBreakByWordW以单词为显示单位显示,后面部分省略不显示。=======3 给Label的文字添加下划线{& UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 400, 300, 100)];& & label.backgroundColor = [UIColor redColor];& & label.numberOfLines = 3;& &&NSMutableAttributedString&*content = [[NSMutableAttributedString alloc]initWithString:[NSString stringWithFormat:@"您的待办业务条fasdfasdfosadfjasdkljfklasjklfjasdlkjfklasdjklfjalskdjflkadsj"]];& & NSRange contentRange = {0,[content length]};& & [content addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle] range:contentRange];& &&label.attributedText =& & [self.view addSubview:label];}4 文本自动根据UILabel调节尺寸label.adjustsFontSizeToFitWidth&=YES; label.numberOfLines&=1;& adjustFontSizeToFitWidth方法可实现文本自动根据label大小自动调整字体尺寸,直到文本的大小达到了自己设置的label文
本尺寸最大、最小值与字符串的最大最小值,但是如果用这个方法还有一个很大的限制就是只有在numberOfLines设置为1时才能用5 UILabel的总结UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 300, 260)];
label.text = @"This is a label";label.font = [UIFont systemFontOfSize:17];
label.textColor = [UIColor orangeColor];
label.shadowColor = [UIColor lightGrayColor];
label.shadowOffset = CGSizeMake(1,0);
label.textAlignment = NSTextAlignmentC
label.lineBreakMode = NSLineBreakByTruncatingTsizeWithFont:constrainedToSize:lineBreakMode: 在iOS7以后有新的方法来替换了。此方法就是 boudingRectWithSize:options:attributes:context现在,展示一下,使用方法&&& &&& NSString *contentStr = @"360DOC是北京六智信息技术有限公司运营的一个免费网络好文收藏和分享的平台网站,用户注册后,即可在360doc上拥有自己的网上图书馆,进行网页文章收藏、管理、分享等操作。";&&& NSAttributedString *attrStr = [[NSAttributedString alloc] initWithString:contentStr];&&& self.showLabel.attributedText = attrS&&& NSDictionary *dic = @{NSFontAttributeName : [UIFont systemFontOfSize:17.0]};&&& // 计算文本的大小&&& CGSize textSize = [contentStr boundingRectWithSize:CGSizeMake(280, 1000) // 用于计算文本绘制时占据的矩形块&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& options: NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin // 文本绘制时的附加选项&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& attributes:dic&&&&&&& // 文字的属性 字体大小&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& context:nil].&&&
发表评论:
TA的最新馆藏[转]&

我要回帖

更多关于 uilabel长度自适应 的文章

 

随机推荐