zoukankan      html  css  js  c++  java
  • ios label 自动计算行高详解

    在OC当中自动计算行高主要调用系统的

    - (--boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

    不同的ios系统下 相同字体的高度大小是不同的 所以不能设置具体的高度值来做限制 

    解决办法:

    复制代码
        label.text = @"xijoaiogioaiogioioaig";
        label.numberOfLines = 2;
        NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc]init];
        style.maximumLineHeight = 20;
        style.minimumLineHeight = 20;
        CGRect rect = [label.text boundingRectWithSize:CGSizeMake(Screen_W - 125, 20*2) options: NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:_comName.font,NSParagraphStyleAttributeName:style} context:nil];
        _height = rect.size.height;
    复制代码

     

     

    下面是对该方法的详解

    size:label或文本显示的宽高,通常在自动计算宽高时 若宽度固定为某一值100 则设置为CGSizeMake (100,MAXFLOAT) 若高度固定为某一值100,则设置为CGSizeMake (MAXFLOAT,100)若宽高都确定则都设置为具体值

     

    options:

    文本绘制时的附加选项。
    有四种类型:
    1.NSStringDrawingTruncatesLastVisibleLine
    2.NSStringDrawingUsesLineFragmentOrigin
    3.NSStringDrawingUsesFontLeading
    4.NSStringDrawingUsesDeviceMetrics
    通常使用NSStringDrawingUsesLineFragmentOriginNSStringDrawingUsesLineFragmentOrigin,整个文本将以每行组成的矩形为单位计算整个文本的尺寸。

    NSStringDrawingUsesFontLeading则以字体间的行距(leading,行距:从一行文字的底部到另一行文字底部的间距。)来计算。

    NSStringDrawingTruncatesLastVisibleLine或者NSStringDrawingUsesDeviceMetric,那么计算文本尺寸时将以每个字或字形为单位来计算。

    attributes:根本文字的哪一种属性来进行计算

    context:文字显示的像素 一般传nil采用系统默认

    注:使用该方法时, 动态计算高度 不能设置adjustToSize(该方法限制为一行)

  • 相关阅读:
    用 Python 带你看各国 GDP 变迁
    Fluent Interface(流式接口)
    probing privatePath如何作用于ASP.NET MVC View
    Word插入htm文件导致文本域动态增加的一个问题
    Visual Studio 2013附加进程调试IE加载的ActiveX Control无效解决方法
    Ubuntu下Chrome运行Silverlight程序
    Windows Phone Bing lock screen doesn't change解决方法
    SPClaimsUtility.AuthenticateFormsUser的证书验证问题
    Web Service Client使用Microsoft WSE 2.0
    Visual Studio 2013安装Update 3启动crash的解决方法
  • 原文地址:https://www.cnblogs.com/weijie-1/p/6201729.html
Copyright © 2011-2022 走看看