NSLineBreakMode 的区别

本文详细介绍了UILabel的各种截断与换行模式,包括以单词或字符为单位的换行与截断,并展示了不同模式下的UILabel表现形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:http://www.jianshu.com/p/9dfc06b4bed9


用于多行和多行文本->字符截断类型(lineBreakMode //设置文字过长时的显示格式 )

typedef enum

{    UILineBreakModeWordWrap = 0,

    UILineBreakModeCharacterWrap,

    UILineBreakModeClip,

    UILineBreakModeHeadTruncation,

    UILineBreakModeTailTruncation,

    UILineBreakModeMiddleTruncation,

} UILineBreakMode;


UILineBreakModeWordWrap = 0, 以单词为单位换行,以单位为单位截断。

UILineBreakModeCharacterWrap, 以字符为单位换行,以字符为单位截断。

UILineBreakModeClip, 以单词为单位换行。以字符为单位截断。

UILineBreakModeHeadTruncation, 以单词为单位换行。如果是单行,则开始部分有省略号。如果是多行,则中间有省略号,省略号后面有4个字符。

UILineBreakModeTailTruncation, 以单词为单位换行。无论是单行还是多行,都是末尾有省略号。

UILineBreakModeMiddleTruncation, 以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符。


解释:


UILineBreakModeWordWrap = 0,

以单词为单位换行,以单词为单位截断。


UILineBreakModeCharacterWrap,

以字符为单位换行,以字符为单位截断。

->

label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。

label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。

label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。

label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。

label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。

label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。


//判断两个CGSize是否长宽都相等-->>>

CGSizeEqualToSize(size0, size1)


### HTML 富文本渲染工具库 #### iOS 平台上的解决方案 对于iOS平台,存在多个选项来处理HTML富文本渲染: - **RichText** 是一个专门为Swift环境设计的开源库[^1]。该库能够简化在iOS与macOS平台上处理和显示HTML内容的工作流程。其核心优势在于提供了一个简洁直观的应用编程接口(API),可以轻松地把HTML字符串转变为具有高度表现力的界面元素。此外,还提供了丰富的样式配置能力,比如调整颜色、字体、行高等属性,并且兼容系统的浅色模式和深色模式切换。 - 另外还有 **DTCoreText**, 这是一款专注于将HTML转换成`NSAttributedString`类型的第三方组件,在iOS环境中被广泛应用于网页视图之外的地方来进行更精细的文字排版控制[^2]。 - 对于希望直接操作底层绘制逻辑的情况,则可以选择使用 **CoreTextLabel** 。此款工具不仅限于简单的文字呈现,还可以灵活定制字体外观并有效管理多行文本布局等问题,特别适合追求极致性能优化的应用场景[^3]。 ```swift // 使用 RichText 将 HTML 字符串转为富文本对象的例子 let richTextView = RichTextView() richTextView.loadHTMLString("<p style='color:red;'>Hello world!</p>", baseURL: nil) // DTCoreText 的基本用法示范 import DTCoreText if let data = "<b>Bold Text</b>".data(using: .utf8), let attributedString = try? NSMutableAttributedString(data: data, options: [.documentType: NSAttributedString.DocumentType.html], documentAttributes: nil) { textView.attributedText = attributedString } // CoreTextLabel 展示如何创建带样式的文本标签 let label = CTLabel(frame: CGRect(x: 0, y: 0, width: 200, height: 50)) label.numberOfLines = 0 label.lineBreakMode = NSLineBreakMode.byWordWrapping label.setAttributedText(NSAttributedString(string: "Custom styled text")) ``` #### 微信小程序中的方案 针对微信小程序开发的需求,有专门为此平台量身定做的 **wxParser** ,这是一个轻量级但功能强大的富文本解析器,能有效地解决从小程序端读取外部HTML数据并正确展现的问题。除了基础的数据绑定特性以外,也包含了诸如图片查看放大缩小以及链接跳转事件监听等实用的功能模块[^4]。 ```javascript // wxParser 在页面 JSON 配置文件里启用插件 { "usingComponents": { "parser": "/components/wxParse/wxParse" } } // 页面 WXML 中调用 parser 组件 <parser bindtap="onLinkTap" parse="{{htmlContent}}" /> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值