我想拆分我的动态UILabel文本,如下所示
UILabel文本-
能力倾向测试与你的要求相关的英语技能。它使一个组织/机构能够评估所有四项英语技能--阅读、写作、听力和口语,以及核心的必修课(语法和词汇),或者仅仅测试一项技能,例如阅读。
在屏幕大小的每一个维度,无论是iphone还是ipad,都要分裂成字符串数组,每一行都要断线。
我想要的结果是字符串数组-
“能力倾向测试与你的要求相关的英语技能。它使一个组织/机构能够评估所有四项英语技能--阅读、写作、听力和口语,以及核心技能”、“必修部分(语法和词汇)或只测试一项技能,例如阅读”。
对于UILabel中的每一个中断行,我都需要拆分字符串,而不考虑动态屏幕大小。
发布于 2019-02-21 14:25:23
您的方法可能很难,相反,我建议您使用其他方法,如使用sizeWithAttributes
extension String {
func widthOfString(usingFont font: UIFont) -> CGFloat {
let fontAttributes = [NSAttributedString.Key.font: font]
let size = self.size(withAttributes: fontAttributes)
return size.width
}
func heightOfString(usingFont font: UIFont) -> CGFloat {
let fontAttributes = [NSAttributedString.Key.font: font]
let size = self.size(withAttributes: fontAttributes)
return size.height
}
func sizeOfString(usingFont font: UIFont) -> CGSize {
let fontAttributes = [NSAttributedString.Key.font: font]
return self.size(withAttributes: fontAttributes)
}
}
假设您知道标签中的宽度和字体大小,您可以使用如下逻辑:
let inputText = "Aptitude tests English skills relevant to your requirements. It enables an organisation / institution to assess all four English skills – reading, writing, listening and speaking together with the core mandatory component (grammar and vocabulary) or test just one skill, e.g. reading."
let labelWidth = UIScreen.main.bounds.width
var resultArray:[String] = []
var readerString = ""
for i in 0 ..< inputText.count
{
readerString += inputText[i]
//Check if overflowing boundries and wrapping for new line
if readerString.widthOfString(usingFont: UIFont.systemFont(ofSize: 14)) >= labelWidth {
resultArray.append(readerString)
readerString = ""
}
}
https://stackoverflow.com/questions/54807417
复制相似问题