iOS开发--根据label内容动态设定label大小
2016-03-03 11:25
417 查看
两个方法:
eg1:
- (CGSize)sizeWithAttributes:(nullable NSDictionary<NSString *, id> *)attrs NS_AVAILABLE(10_0, 7_0);
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);
eg1:
- (void)viewDidLoad { [super viewDidLoad]; NSString *str = @"原纱央莉选择了加入AV界为自己谋求稳定的工作,并且选择了SOD作为自己的东家。在2008年11月25日sabra杂志里当时原纱央莉连载的专栏“SAORIchewBE”里公开了要加入AV的事情。"; //设置按照什么字体大小来计算,你可以添加其他的属性 NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:25]}; //label1 UILabel *label1 = [[UILabel alloc]init]; label1.backgroundColor = [UIColor yellowColor]; CGSize size1 = [str sizeWithAttributes:attrs];//方法1,计算大小,但是只有一行 label1.frame = (CGRect){{50,50},size1}; label1.text = str; [self.view addSubview:label1]; //label2 UILabel *label2 = [[UILabel alloc]init]; label2.backgroundColor = [UIColor purpleColor]; CGSize size2 = CGSizeMake(200, MAXFLOAT);//给出一个限制size,设定宽度200,高度可变 CGRect rect2 = [str boundingRectWithSize:size2 options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];//方法2,计算大小,但是会根据size2来限制 CGFloat label2_H = rect2.size.height; label2.frame = CGRectMake(50, 100, size2.width, label2_H); [self.view addSubview:label2]; label2.text = str; label2.numberOfLines = 0; //label1和label2都没有设置字体的大小,所以你会感觉label有很多空白,看label3 //label3设置了字体大小,因为默认的字体大小小于25,所以label1和label2都有空白,现在设置label3的字体和计算依据的字体一样大,看效果 UILabel *label3 = [[UILabel alloc]init]; label3.backgroundColor = [UIColor grayColor]; CGSize size3 = CGSizeMake(200, MAXFLOAT); CGRect rect3 = [str boundingRectWithSize:size2 options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil];//方法2 CGFloat label3_H = rect3.size.height; label3.frame = CGRectMake(150, 300, size3.width, label3_H); [self.view addSubview:label3]; label3.font = [UIFont systemFontOfSize:25];//相比label2多了这句代码 label3.text = str; label3.numberOfLines = 0; }
相关文章推荐
- iOS拨打电话方法(3种)
- IOS多线程之NSThread、NSOperation、GCD
- Github Star集(iOS)-(持续更新)
- iOS 多线程基础
- iOS 获取设备唯一标示符
- iOS开发之macbook购买指南
- iOS 之 TableView如何刷新指定的cell 或section
- iOS经典讲解之正则表达式判断手机号码
- iOS开发笔记 - 工具篇
- ios 视频录制与播放
- iOS动态获取键盘高度
- 如何设计一个 iOS 控件?(iOS 控件完全解析)
- iOS9 class dump header
- iOS9 class dump header
- iOS开发-清理缓存功能的实现
- iOS开发中常用第三方库的整理
- sencha touch 2以上版本不兼容最新ios9组件的思路
- iOS 动画
- 开发完iOS应用,接下去你该做的事
- CollectionView嵌套TableView。页面滑动指向不同的标题