zoukankan      html  css  js  c++  java
  • 转:UIView的sizeToFit与sizeThatFits

    UILabel经常用到的方法
    - (void)sizeToFit
    - (CGSize)sizeThatFits:(CGSize)size
    解释如下:

    sizeToFit会自动调用sizeThatFits方法;

    sizeToFit不应该在子类中被重写,应该重写sizeThatFits

    sizeThatFits传入的参数是receiver当前的size,返回一个适合的size

    sizeToFit可以被手动直接调用

    sizeToFit和sizeThatFits方法都没有递归,对subviews也不负责,只负责自己

    NSString  对label有用的方法,如下:
    Computing Metrics for a Single Line of Text(针对单行的文字)
    – sizeWithFont:
    – sizeWithFont:forWidth:lineBreakMode:
    – sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:
    Computing Metrics for Multiple Lines of Text(针对多行的文字,这个常用)
    – sizeWithFont:constrainedToSize:
    – sizeWithFont:constrainedToSize:lineBreakMode:

    我们经常会根据label里面的文字的多少,来计算label的尺寸,例如做微博的cell的时候
    我们经常会用“sizeWithFont:constrainedToSize:”来获得size,以此改变label的尺寸
    其实,这个可以用label 的“sizeToFit”来替代,当label调用“sizeToFit”时,会自动改变label本身的尺寸,所以这个方法是没有返回值的。如果对“”的计算不满意,可以继承UILabel来自定义label,同时重写label的“sizeThatFits:”方法,这样自定义label的“sizeToFit”行为就会被改变。

    UILabel有两个接口是专门用来重写,以此来自定义自己的label,如下:
    Drawing and Positioning Overrides
    – textRectForBounds:limitedToNumberOfLines:
    – drawTextInRect:
    上面这两个方法不是用来调用的,只适合被UILabel子类重写

    – textRectForBounds:limitedToNumberOfLines:
    用来改变label里面文字展示窗口的大小,你可以自己根据文字的多少,来计算窗口的大小

    – drawTextInRect:
    在绘图环境实现文字的绘制,这个方法里面里面已经配置好了绘图环境,使用方式如下:
    1.直接获得当前绘图上下文,
    2.接着更改绘图环境设置
    3.在就是调用super方法来绘制即可

  • 相关阅读:
    C++学习 之 继承(笔记)
    C++学习 之 类中的特殊函数和this指针(笔记)
    C++学习 之 类的声明及成员的访问(笔记)
    C++学习 之 指针及动态内存分配(笔记)
    C++学习 之 函数的重载及内联(笔记)
    C++学习 之 控制程序流程 (笔记)
    pkg-config too old的解决方法
    编译中出现的undefined reference to XXX
    sourceInsight下标题栏显示文件完整路径
    linux下 sleep() 与 usleep()
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4593999.html
Copyright © 2011-2022 走看看