如何根据 Swift iOS 中 UILabel 中的条件截断字符串的中间部分?

问题描述 投票:0回答:1

我有一个像这样的字符串: 澳大利亚 6,7,8,9,10,11,...,20,21,22,23,24,25 参考这张图片

我只需填写 8 个尺寸。这个尺寸没有限制,也可以超过 20 或 50。 如果只有 8 种尺寸,则显示 AU 6, 7, 8, 9, 10, 11, 12 ,13 如果尺寸超过 8 个,则显示 AU 6, 7, 8, 9, 10, 11 ... 25。仅在最后一个尺寸前面加三个点。

我已为 UILabel 指定了 1 行,链接中断为 Truncate Middle。

我对 Swift 很陌生,我不知道如何实现这一目标?我将非常感谢你的帮助。谢谢你!

ios swift string uilabel truncate
1个回答
0
投票

我认为仅通过 SwiftUI 无法实现该要求。从大小(整数)数组中生成字符串的算法应该会有所帮助。例如:

func makeSizesString(sizesArray: [Int]) -> String {
  if (sizesArray.count <= 8) {
    sizesArray.map { "\($0)" }.joined(separator: ", ")
  } else {
    sizesArray[...5].map { "\($0)" }.joined(separator: ", ") + " ... \(sizesArray[sizesArray.count - 1])"
  }
}

print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7])) // 1, 2, 3, 4, 5, 6, 7
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8])) // 1, 2, 3, 4, 5, 6, 7, 8
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8, 9])) // 1, 2, 3, 4, 5, 6 ... 9
print(makeSizesString(sizesArray: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])) // 1, 2, 3, 4, 5, 6 ... 10
© www.soinside.com 2019 - 2024. All rights reserved.