sizeThatFits and sizeToFit
Posted cynchanpin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sizeThatFits and sizeToFit相关的知识,希望对你有一定的参考价值。
http://liuxing8807.blog.163.com/blog/static/9703530520134381526554/
sizeThatFits and sizeToFit是UIView的两个方法, 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size; 作用:return 'best' size to fit given size. does not actually resize view. Default is return existing view size - (void)sizeToFit; 作用: calls sizeThatFits: with current view bounds and changes bounds size. - (void)viewDidLoad { [super viewDidLoad]; UIView *view = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 200, 100)]; view.backgroundColor = [UIColor yellowColor]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 0, 0)]; [label setFont:[UIFont systemFontOfSize:20]]; label.text = @"hello wdszgrf"; CGSize sizeThatFits = [label sizeThatFits:CGSizeZero]; NSLog(@"---- %f %f ----", sizeThatFits.width, sizeThatFits.height); // output: ---- 117.000000 24.000000 ---- NSLog(@"**** %f %f ****", label.frame.size.width, label.frame.size.height); // output: **** 0.000000 0.000000 **** 说明sizeThatSize并没有改变原始label的大小 [label sizeToFit]; // 这样搞就直接改变了这个label的宽和高,使它依据上面字符串的大小做合适的改变 [label setCenter:CGPointMake(80, 50)]; NSLog(@"==== %f %f ====", label.frame.size.width, label.frame.size.height); // output: ==== 117.000000 24.000000 ==== [view addSubview:label]; [self.view addSubview:view]; }
以上是关于sizeThatFits and sizeToFit的主要内容,如果未能解决你的问题,请参考以下文章
UILabel 的 sizeToFit/sizeThatFits 忽略 numberoflines 属性
可以让 UIButton sizeThatFits 工作吗?
用于 UITextView 文本的 iOS 8 sizeThatFits 未返回正确的高度(自动布局)
重写UILabler的sizeThatFits方法,需要触发两次才会有效果
可调整大小的 UITextView 的 sizeThatFits 在 UIViewRepresentable 中给出了错误的大小