一个角色在iOS中占用多少像素?

时间:2016-06-14 11:49:02

标签: ios swift uilabel

我试图在UILabel视图上自动布局文本。 文本(例如" abcdefghij")包含十个字符。我想在一行中显示它。 为方便起见,我关闭了Size Class和Auto Layout,并添加了以下代码来布局UILabel上的文本。它应该是一行中的十个字符,并且UILabel的宽度等于设备的宽度。

    let screenWidth = UIScreen.mainScreen().bounds.width
    labelView.frame = CGRect(x: labelView.frame.origin.x, y: labelView.frame.origin.y, width: screenWidth, height: labelView.frame.height)
    let string = "abcdefghij"
    let stringLength = CGFloat(string.characters.count)
    let characterSize = keyboardView.font.pointSize
    let characterSpacing = (screenWidth - characterSize * stringLength) / stringLength 
    let content = NSAttributedString(string: string, attributes: [NSKernAttributeName: characterSpacing])
    keyboardView.attributedText = content

但事实证明是这样的。 The width of string is not equal to the screen

我认为,这里唯一可能是错误的是pointSize。当我将字体大小设置为17时,它等于13.8。 我不明白。 请给我一些提示。 感谢您的关注。

通过使用sizeWithAttributesboundingRectWithSize(_:options:context:),我终于弄清楚它是如何工作的。但我的起源目的是在一行中拟合10个字符。代码应该计算字符之间的空间,并且所有空间都是相同的大小。你能给我一些建议吗? This is what I want to make

1 个答案:

答案 0 :(得分:1)

每个字符占用不同的空间量,具体取决于字体的字符,字体和大小。

因此,您可以使用boundingRectWithSize(_:options:context:)在运行时预测字符串的大小,然后根据您的要求采取措施。