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方法来绘制即可

  • 相关阅读:
    Poly2Tri介绍[转]
    Threejs 开发3D地图实践总结【转】
    cesium and three.js【转】
    Three.js中如何显示帧速【转】
    Cesium学习笔记(七):Demo学习(自由控制飞行的飞机)[转]
    cesium原理篇(三)--地形(1)【转】
    cesium原理篇(二)--网格划分【转】
    Cesium原理篇:3D Tiles(1)渲染调度【转】
    shell脚本监控阿里云专线网络状态,若不通通过触发阿里云的进程监控报警
    jstat命令总结
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4593999.html
Copyright © 2011-2022 走看看