iOS swift将文字转为竖排文字
2023-03-07 09:13:47 时间
在开发一款中国文化的app时,需要以竖排文字的方式展示诗文。 在CSS中,有一个文字方向的属性可以用来直接显示竖排文字,但是在iOS中并没有直接提供,所以扩展一下String类,可以返回一个竖排多行文字
先看一下效果:
简单做一下说明:
convertVerticalText 是将多行文字转变为多列文字的处理过程,类似于矩阵的对角。
首先获取待转换的文字一共有多少行,那么也就对应着转换后每一行有几个字。
由于每一行的文字个数未必相同,在转换为列的时候,就意味着会有空白,所以要获取最长一行有多少个字符。 每次在取完有效字符后,如果没有达到最长字符时,就要自动填入空白字符了。
// Auto convert text to Vertical text on UILabel
extension UILabel{
func toVertical( gapLength:Int = 1,spaceLength:Int = 1, inverse:Bool = true ){
if self.text != nil{
self.text = self.text!.convertVerticalText(gapLength: gapLength, spaceLength: spaceLength, inverse: inverse)
}
}
}
extension String{
func convertVerticalText( gapLength:Int = 1,spaceLength:Int = 1, inverse:Bool = true ) -> String{
let gap = String.init(repeating: " ", count: gapLength)
let space = String.init(repeating: " ", count: spaceLength)
let sentences = self.split(separator: "\n")
let sequence = 0 ..< sentences.count
var T:[String] = []
var WL:[Int] = []
var maxLength = sentences[0].count
// 统计最长句
for i in sequence {
maxLength = max(maxLength, sentences[i].count)
}
// 初始化
for _ in 0...maxLength-1 {
T.append("")
WL.append(0)
}
for i in sequence {
var idx = 0
for w in sentences[i]{
if w == " "{
T[idx].append( space )
}else{
T[idx].append( w )
}
WL[idx] += 1
if( WL[idx] < sentences.count ){
T[idx].append(gap)
}
idx += 1
}
if idx < maxLength-1{
for sup in idx ... maxLength-1 {
T[sup].append(space)
WL[sup-1] += 1
}
}
}
var _T:String = ""
for single in T {
_T.append( inverse ? String(single.reversed()) : single )
_T.append("\n")
}
return _T
}
}
相关文章
- 新增功能 – Amazon FreeRTOS 空中 (OTA) 更新
- Python:IPython性能度量
- 结合 AWS 服务与 Kubernetes 的持续集成
- OpenSource | 开放网络用户组织 (ONUG)——极具影响力的终端用户组织
- Amazon Polly 现已支持中文普通话
- AWS X-Ray 现支持 Amazon API Gateway 和全新抽样规则 API
- 使用 AWS Lambda 支持的宏扩展 AWS CloudFormation
- Amazon DynamoDB – 为企业助力的强大功能
- AWS – 做好应对下一场风暴的准备
- Amazon Kinesis Data Streams 推出增强扇出功能和 HTTP/2 数据检索 API功能
- AWS 推出最新 T3 实例 – 稳定且性价比更高
- 使用 Amazon API Gateway 为 SAP 部署 API
- 新功能 – AWS Systems Manager Session Manager 支持通过 Shell 访问 EC2 实例
- 了解 AWS 服务和解决方案 – AWS 9 月在线技术讲座
- Amazon AppStream 2.0 新增功能介绍
- SAP on AWS – 过去、现在和未来
- Amazon SageMaker Automatic Model Tuning:利用机器学习支持机器学习
- AWS CodeBuild 将提供本地构建支持
- python wget下载文件
- AWS 服务达到了 GDPR 的要求