UIlabel 的自适应文字

news/2024/5/19 4:27:19

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

[为什么要自适应高度 ?
简单的说, 像微信的聊天框, 气泡是不知道每次输入的内容的, 如此一来, 需要Label适应文字的的高度, 以达到灵活的目的。

接下来, 我们来实现这个过程
实现的关键方法介绍 :
NSString下面有一个方法, 可以通过NSString类型的文本计算出文字的范围

- boundingRectWithSize:options:attributes:context:
此处有四个参数 :
size
限制最大宽高, 虽然是自适应, 但是需要限制最大的宽度和高度.
options
一个枚举, 绘制自定义方式字符串的选项(简而言之, 通常情况下, 选3选项就够用了, 如果效果不满意, 再试试其他的选项吧 ) : NSStringDrawingOptions

enum { 
NSStringDrawingTruncatesLastVisibleLine = 1 << 5, 
NSStringDrawingUsesLineFragmentOrigin = 1 << 0, 
NSStringDrawingUsesFontLeading = 1 << 1, 
NSStringDrawingUsesDeviceMetrics = 1 << 3,
};typedef NSInteger NSStringDrawingOptions;

NSStringDrawingTruncatesLastVisibleLine : 如果文本内容超出指定的矩形限制,文本将被截去并在最后一个字符后加上省略号 . 如果三选项没有选择, 忽略此选项.

NSStringDrawingUsesLineFragmentOrigin : 整个文本将以每行组成的矩形为单位计算整个文本的尺寸.

NSStringDrawingUsesFontLeading : 以字体间的行距(leading,行距:从一行文字的底部到另一行文字底部的间距。)来计算高度。
NSStringDrawingUsesDeviceMetrics : 计算布局时使用图像符号边界, 而不是排版的边界 .
attributes
应用于字符串的文本属性.](http://)

context
NSStringDrawingContext
控制如何调整字间距和缩放。对象包含的信息将用于文本绘制。该参数可为 nil

返回值
返回一个矩形, 这个矩形为文字所占的矩形 .
实现过程

Paste_Image.png
![输入图片说明](https://static.oschina.net/uploads/img/201602/15170313_01kN.png "在这里输入图片标题")

转载于:https://my.oschina.net/u/2559341/blog/615200


http://www.niftyadmin.cn/n/3863240.html

相关文章

Android Support兼容包详解Material Design 详解

2019独角兽企业重金招聘Python工程师标准>>> Android Support兼容包详解&#xff1a;http://www.open-open.com/lib/view/open1427852683115.html Android Support 包里究竟有什么&#xff1a;http://www.2cto.com/kf/201411/350928.html Android Material Design 详…

[Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)

以下内容为原创&#xff0c;欢迎转载&#xff0c;转载请注明 来自天天博客&#xff1a;http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量DI图表初始化的性能 原文&#xff1a;http://frogermcs.github.io/dagger2metrics-measure-performance-of-…

SSL/TLS协议簇加解密流程

一、概述 SSL协议是最早Netscape公司开发的安全通信协议&#xff0c;用于浏览器安全通信。到SSL Version3&#xff0c;提交作为IFTF草案&#xff0c;已经广泛的应用Intetnet通信。之后IETF对SSLv3稍作改动并更名为TLS1.0&#xff0c;对应RFC2246&#xff0c;之后的TLS1.1、TLS1…

openssl生成证书命令详解

1、生成csr openssl req -new -newkey rsa:2048 -nodes -keyout 您的域名.key -out 您的域名.csr req命令主要用于生成和处理PKCS#10证书请求。 -new 生成新的证书请求以及私钥&#xff0c;默认为1024比特。 -newkey rsa:bits 用于生成新的rsa密钥以及证书请求。如果用户不…

pyextend库-unpack列表集合字符串解包函数

pyextend - python extend lib unpack (iterable, count, fillNone) 参数: iterable: 实现 __iter__的可迭代对象, 如 str, tuple, dict, list count: 需要拆分的数量, 如数值大于 len(iterable) 则使用 fill 的值进行后续填充 fill: 默认值填充 使用范例: Exampl…

spring Bean使用案例 无参数构造方式

1、导入spring包&#xff08;四个基本核心包&#xff09; 2、在src目录新建xml 3、xml导入schema约束 <beans xmlns"http://www.springframework.org/schema/beans" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLo…

[置顶]白话贝叶斯理论及在足球比赛结果预测中的应用和C#实现

离去年“马尔可夫链进行彩票预测”已经一年了&#xff0c;同时我也计划了一个彩票数据框架的搭建&#xff0c;分析和预测的框架&#xff0c;会在今年逐步发表&#xff0c;拟定了一个目录&#xff0c;大家有什么样的意见和和问题&#xff0c;可以看看&#xff0c;留言我会在后面…

spring Bean使用案例 静态方法方式 和工厂模式

参考上一篇文章spring Bean使用案例 无参数构造方式 静态方法 1、新建一个类 package spring_day_1; /** * * author linwen *静态方法创建对象 */ public class TastDome2 { public static TastDome add(){ return new TastDome(); } } 2、编写xml…