您的位置:首页 > 产品设计 > UI/UE

iOS开发UI技巧篇 -- UILable

2015-07-16 11:21 447 查看
1、iOS7 之后 UILable显示多行

// 这个在某些场景下会出问题,没找到原因;
UILabel *lable = [[UILabel alloc] init];
lable.text = @"当您有新中奖订单,启动程序时通过动画提醒您。为避免过于频繁,高频彩不会提醒。";
[self.tableView addSubview: lable];
lable.backgroundColor = [UIColor colorWithRed:0.370 green:1.000 blue:0.940 alpha:1.000];
<span style="color:#FF6666;">lable.numberOfLines = 0;  // 设置任意行
CGSize size = [lable.text boundingRectWithSize:[UIScreen mainScreen].bounds.size            // 这指的是最大限制值,还可以采用 CGSizeMake(320, MAXFLOAT) 这种方式
options:NSStringDrawingUsesLineFragmentOrigin                     // 采用这种方式最合适
attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13]}  // 设置属性字典
context:nil].size;  // iOS7之后的方法                                  // 有context的地方一般设置为nil </span>

//    [lable.text boundingRectWithSize:CGSizeMake(320, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:13]}
context:nil];
lable.frame = (CGRect){{contentX,contentY},size};; // 记住frame的高度不宜过大(更不能使用MAXFLOAT),否则会不显示。


网络上的:测试过没问题

UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 300, 100)];

<span style="color:#FF6666;"> label.numberOfLines = 0;

label.lineBreakMode = NSLineBreakByWordWrapping;</span>

label.text = @"本店于十一期间特推出一系列优惠,限时限量敬请选购!沙发:钻石品质,首领风范!床垫:华贵典雅,彰显时尚!尊贵而不失奢华,典雅却不失自然!温馨和浪漫的生活,我们与你一同创造!";

<span style="color:#FF6666;">CGSize size = [label sizeThatFits:CGSizeMake(label.frame.size.width, MAXFLOAT)];</span>

label.frame =CGRectMake(0, 100, 300, <span style="color:#FF0000;">size.height</span>);

label.font = [UIFont systemFontOfSize:14];

[self.view addSubview:label];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: