Swift中UILabel多行文本的展开/收起

背景介绍:

笔者最近在做一个Swift版本的iOS项目,遇到一个新的需求迭代是:要求文字描述部分的多行文本,超过两行的部分,支持展开和收起功能

印象中 YYLabel 应该是支持这样的功能实现的。

由于项目是Swift项目,所以打算采用全部Swift代码。遂,挖掘半天,找来了一位大佬翻写的YYText,库名BSText。而这用法保持一致。

又因需要适配iPad的分屏、转屏,所以额外引入了著名布局库SnapKit。


开发环境

开发环境与项目环境保持了一致。

Xcode 13.4.1 | Swift 5.7 | Storyboard

效果图

正所谓空口无凭,先上菜——效果图,一睹为快。「多图预警」

收起状态下 Simulator Screen Shot - iPhone 13 mini - 2022-07-28 at 23.19.45.png

展开状态下

Simulator Screen Shot - iPhone 13 mini - 2022-07-28 at 23.19.51.png

实现细节

细节-1

多行文本,需要给予设置最大宽度

那,如果不设置最大宽度呢?那就会无法展开。

image.png

细节-2

展开操作,需要设定新的布局。

那,如果不设置高度呢?那自然是展开全部显示了。

image.png

细节-3

收起操作,需设定新的布局

设置高度,即是默认收起状态展示的行数

image.png

细节-4

向上展开/向下展开(设置距离top/bottom的固定距离)

加入动画效果

image.png

示例代码

由于代码较少,这里就直接贴出对应的Podfile和全量代码。

# Podfile
platform:ios,'14.0'
source 'https://cdn.cocoapods.org/'
# source 'https://github.com/CocoaPods/Specs.git'
use_frameworks!

target 'TestUItextView' do
  pod 'BSText'
  pod 'SnapKit'
end
复制代码

carbon (8).png

本章回,完结


下回预告

如何用UITextView实现多行文本的展开/收起功能?

如何用UITextView不依赖任何三方库实现多行文本的展开/收起功能?

猜你喜欢

转载自juejin.im/post/7125440855414046750