【问题标题】:Find width of string (swift)查找字符串的宽度(快速)
【发布时间】:2020-12-09 02:35:50
【问题描述】:

如何在给定字体名称和字体大小的情况下找到字符串的宽度 (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。
  • 至少在这里,它们是相同的,但那个值显然没有填满屏幕。

【问题讨论】:

标签: ios swift font-size


【解决方案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

【讨论】:

  • 这对于标签来说非常有用,但我想将 UIView 的宽度设置为包含多个字符串中的最大值。我用 UIView 尝试了 sizeToFit(),但它不起作用。
  • 实际上,sizeToFit() 确实有效!但前提是 UIView 的宽度已经大于最长的字符串。它只会向下调整,但不会向上调整。不知道为什么...
猜你喜欢
  • 2017-06-13
  • 1970-01-01
  • 2019-12-27
  • 2015-08-18
  • 1970-01-01
  • 2011-07-28
  • 2011-03-01
  • 1970-01-01
  • 2011-07-20
相关资源
最近更新 更多