查找字符串的宽度(快速)

时间:2020-08-19 19:11:01

标签: ios swift font-size

如何根据给定的字体名称和字体大小找到字符串的宽度(CGFloat)?

(目标是将UIView的宽度设置为足以容纳字符串的宽度。)

我有两个字符串:一个重复“ 1”,重复36次,另一个重复“ M”,重复36次。两者都填满了屏幕的宽度(359.0)(给予或留出一些余量)。

我正在使用等距的Courier 16,因此我希望两个字符串的宽度相等(实际上它们确实会出现在屏幕上)。

但是,使用https://stackoverflow.com/a/58782429/8635708

  • 带有“ 1”的字符串的宽度是257.34375
  • 带有“ M”的字符串的宽度为492.1875。
  • 第一个是没有填满屏幕,另一个是太长了。

并使用https://stackoverflow.com/a/58795998/8635708

  • 每个字符串的宽度为249.640625。
  • 至少在这里,它们是相同的,但该值显然不会填满屏幕。

1 个答案:

答案 0 :(得分:1)

我认为您可以创建标签并致电label.sizeToFit()

let label = UILabel()
label.font = UIFont.init(name: "Courier", size: 16)
label.text = "mmmmmmmmmmmmmmmm"//"1111111111111111"
label.sizeToFit()
print("Width: \(label.frame.size.width)") //153.66666666666666 -> For both strings