UILabel 根据内容的多少来计算label的frame
2015-08-22 11:26
423 查看
self.label.text = @"....";
计算 frame 的最新方法
//1.设置lable最大显示行数
self.label.numberOfLines = 0;
//2.写出字体的字号
NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:15]};
//3.根据显示区域的限制 (如CGSizeMake(375.0, 40.0)) 求出一个框架的size
CGRect rect = [self.label.text boundingRectWithSize:CGSizeMake(375.0, 40.0) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];
例如
NSDictionary *attrs = @{NSFontAttributeName :[UIFont systemFontOfSize:15]};
CGRect rect = [@"..." boundingRectWithSize:CGSizeMake(MAXFLOAT, 20) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];
附上函数抽取
-(void)calculateFrameOfLabel:(UILabel *)lab andAddValue:(CGFloat)value{
lab.numberOfLines = 0;
lab.font = kFontSize_24;
NSDictionary * attributes = [NSDictionary dictionaryWithObject:lab.font forKey:NSFontAttributeName];
CGRect rect = [lab.text boundingRectWithSize:CGSizeMake(kScreenWidth - 12-12, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
lab.frame = CGRectMake(12, value, kScreenWidth - 24, rect.size.height);
}
有人说这么写
计算 frame 的最新方法
//1.设置lable最大显示行数
self.label.numberOfLines = 0;
//2.写出字体的字号
NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:15]};
//3.根据显示区域的限制 (如CGSizeMake(375.0, 40.0)) 求出一个框架的size
CGRect rect = [self.label.text boundingRectWithSize:CGSizeMake(375.0, 40.0) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];
例如
NSDictionary *attrs = @{NSFontAttributeName :[UIFont systemFontOfSize:15]};
CGRect rect = [@"..." boundingRectWithSize:CGSizeMake(MAXFLOAT, 20) options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];
附上函数抽取
-(void)calculateFrameOfLabel:(UILabel *)lab andAddValue:(CGFloat)value{
lab.numberOfLines = 0;
lab.font = kFontSize_24;
NSDictionary * attributes = [NSDictionary dictionaryWithObject:lab.font forKey:NSFontAttributeName];
CGRect rect = [lab.text boundingRectWithSize:CGSizeMake(kScreenWidth - 12-12, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
lab.frame = CGRectMake(12, value, kScreenWidth - 24, rect.size.height);
}
有人说这么写
+ (CGSize )viewHeight:(CGSize )withd :(float)thfont :(NSString*)text { CGSize size; if(IOS_7>=7.0) { NSDictionary * attributes = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:thfont]forKey:NSFontAttributeName]; NSAttributedString *attributedText =[[NSAttributedString alloc]initWithString:text attributes:attributes]; CGRect rect = [attributedText boundingRectWithSize:withd options:NSStringDrawingUsesLineFragmentOrigin context:nil]; size = rect.size; } else { //设置label的最大行数 size = [text sizeWithFont:[UIFont systemFontOfSize:thfont]constrainedToSize:withd lineBreakMode:NSLineBreakByClipping]; } return size; }
相关文章推荐
- Guest与virtio netdev交互模式
- POJ 2478 Farey Sequence
- Android source build/envsetup.sh 及lunch 过程
- UI-UILabel
- POJ 2487:Farey Sequence
- android模拟器 一个错误:X Error of failed request: BadRequest (invalid request code or no such operation)
- UIDatePicker的使用
- (java gui) 和 (网页 js) 通过url传值(如json)时,注意问题
- UITableView的简单使用
- 【转】自定义UITableViewCell(registerNib: 与 registerClass: 的区别)
- POJ---2524-Ubiquitous Religions(并查集)
- NGUI之图文混排
- UIPickerView的使用
- iOS UIControl 几个事件的说明
- 黑马程序员--OC之UIKit类的继承结构图
- xcode -UI 学习笔记
- 重用从xib加载的UITableViewCell
- HDU-5146_Sequence
- D Tree Requests dfs+二分 D Pig and Palindromes -dp
- 在 iOS 9 中使用 UIStackView 的总结