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];
}
时间: 2024-10-13 07:10:29

sizeThatFits and sizeToFit的相关文章

UIButton的探秘

原文链接 sizeToFit()和sizeThatFits(_:) sizeToFit()会调用sizeThatFits(_:)方法,将现在的frame作为参数.然后根据函数返回的结果更新view. sizeToFit will simply call through to sizeThatFits: passing the view's current size as the argument. It will then update the view's frame based on the

深入理解Auto Layout 第一弹

本文转载至 http://zhangbuhuai.com/2015/07/16/beginning-auto-layout-part-1/ By 张不坏 2015-07-16 更新日期:2015-07-17 文章目录 1. 写在前面 2. iOS布局机制 3. 几个重要的API 3.1. intrinsicContentSize方法 3.2. preferredMaxLayoutWidth属性 3.3. sizeThatFits:方法和sizeToFit方法 3.4. systemLayoutS

iOS--碎片知识锦集

知识锦集day01 1.UIView的两个方法: sizeThatFits和 sizeToFit 官方文档上说: - (CGSize)sizeThatFits:(CGSize)size;     //----->返回一个最接近你填的参数的最适合的Size,  不是真的去重新调整View的size,默认使用原先已存在的Size作用:return 'best' size to fit given size. does not actually resize view. Default is retu

layoutSubviews和drawRect:(CGRect)rect的用法探讨

布局/定位相关 @interface UIView(UIViewHierarchy) - (void)setNeedsLayout; 注意: 1.在receiver标上一个需要被重新布局的标记,在系统runloop的下一个周期自动调用layoutSubviews. - (void)layoutIfNeeded; 注意: 1.方法如其名,UIKit会判断该receiver是否需要layout.根据Apple官方文档,layoutIfNeeded方法应该是这样的layoutIfNeeded遍历的不是

ios UIView sizeToFit sizeThatFits

UILabel *testLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 50, 0, 0)]; testLabel.backgroundColor = [UIColor whiteColor]; testLabel.text = @"我们都有一个家啊,名字叫中国,家里攀着两条龙"; testLabel.font = [UIFont systemFontOfSize:20]; testLabel.textColor = [UI

sizeToFit的学习与认知

今天一扫前两日的坏心情,终于有心情平静下来,今天我是根据网络上的一些资料进行学习,今天学习的内容是 sizeToFit() 方法在不方便手动布局的场景中的使用. 首先感谢资料的提供者:参考1 参考2 参考3 今天的主要是看到了一个方法,sizeToFit 方法,就上网搜了一下,重点是了解了一下该方法如何应用 首先: 在调用sizeToFit的时候,系统会根据内容帮我布局一个它认为合适的大小.sizeToFit()方法声明再UIView中,所以所有继承于UIView的控件都可以调用该方法. siz

sizeToFit的用法和用途

最近有遇到过sizeToFit的方法,比较好奇,所以查了点资料 在官方文档中 - (void)sizeToFit; // calls sizeThatFits: with current view bounds and changes bounds size.  调用这个方法来改变当前view的大小(让大小自适应)   现在我从网页上加载一张图片并使用sizeToFit方法 //给imageView设置图片 -(void)setImage{ //从网页中获取图片的URL NSURL *url =

重写UILabler的sizeThatFits方法,需要触发两次才会有效果

#import "ViewController.h" @interface SpecialLabel:UILabel @end @implementation SpecialLabel - (CGSize)sizeThatFits:(CGSize)size { CGSize s = [super sizeThatFits:size]; return CGSizeMake(s.width +50, s.height +50); } @end @interface ViewControll

sizeToFit()使用心得

sizeToFit()使用心得: 很多的初学者,包括我在内,当初在学习的时候,特别纠结什么时候用这个sizeToFit(). 下面我就来分享一下我的一些使用心得. 一.我们先来看看官方文档对sizeToFit()的声明:(Swift版本的) // calls sizeThatFits: with current view bounds and changes bounds size. // 翻译:调用sizeThatFits方法:参数(与当前视图范围和变化的界限大小). public func