Arrays 在uilabel中拆分字符串多行swift
我想拆分我的动态UILabel文本,如下所示,例如 UILabel文本- 能力倾向测试与你的要求相关的英语技能。它使组织/机构能够评估所有四项英语技能——阅读、写作、听力和口语以及核心必修部分(语法和词汇),或者只测试一项技能,例如阅读 将每一行拆分为字符串数组,在屏幕大小的每个维度上实现盈亏平衡,无论是iphone还是ipad 我想要的结果是字符串数组- [“能力倾向测试与您的要求相关的英语技能。它使组织/机构能够”“评估所有四项英语技能-阅读、写作、听力和口语以及核心”“必修部分(语法和词汇)或只测试一项技能,例如阅读。”]Arrays 在uilabel中拆分字符串多行swift,arrays,swift,string,split,uilabel,Arrays,Swift,String,Split,Uilabel,我想拆分我的动态UILabel文本,如下所示,例如 UILabel文本- 能力倾向测试与你的要求相关的英语技能。它使组织/机构能够评估所有四项英语技能——阅读、写作、听力和口语以及核心必修部分(语法和词汇),或者只测试一项技能,例如阅读 将每一行拆分为字符串数组,在屏幕大小的每个维度上实现盈亏平衡,无论是iphone还是ipad 我想要的结果是字符串数组- [“能力倾向测试与您的要求相关的英语技能。它使组织/机构能够”“评估所有四项英语技能-阅读、写作、听力和口语以及核心”“必修部分(语法和词汇
对于UILabel中的每一个换行符,无论动态屏幕大小如何,我都需要拆分字符串您的方法可能很难,相反,我建议您使用其他方法,如使用
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 = ""
}
}
let inputText=“能力倾向测试与您的要求相关的英语技能。它使组织/机构能够评估所有四项英语技能——阅读、写作、听力和口语以及核心必修部分(语法和词汇),或者只测试一项技能,例如阅读。”
让labelWidth=UIScreen.main.bounds.width
var resultArray:[字符串]=[]
var readerString=“”
对于0中的i..=labelWidth{
resultArray.append(readerString)
readerString=“”
}
}
您真的相信inputText
真的是一个数组,可以根据循环将其元素分配给readerString
。你有没有在操场上测试过这个问题?这里有几个字符串扩展,你可以使用它们来获得这个行为,我没有把它们粘贴在这里,因为它们与你的问题无关。请查看此链接,它可能会帮助您:[link]()