【问题标题】:UILabel sizeToFit with relative font size not working具有相对字体大小的 UILabel sizeToFit 不起作用
【发布时间】:2016-02-24 17:12:50
【问题描述】:

如果我有一个多行字符串,我将它放在 UILabel 中, 设置相对于视图边界的字体大小, 然后我打电话给sizeToFit, 所有这些都发生在drawRect:, 它完美地调整了我的标签。 一旦 drawRect: 因为方向改变而被再次调用, 它搞砸了所需的尺寸。

self.bounds.width 在所有情况下都比标签所需的大得多。

代码:

import UIKit

class CustomView: UIView {
    var label = UILabel()

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.contentMode = .Redraw
        addSubview(label)
    }

    override func drawRect(rect: CGRect) {
        let string = "this is line 1\r\nand\r\nthis is line 3"
        label.numberOfLines = 3
        label.text = string
        label.font = label.font.fontWithSize(self.bounds.width / 30)
        label.lineBreakMode = NSLineBreakMode.ByWordWrapping
        label.textAlignment = NSTextAlignment.Center

        label.sizeToFit()

        label.backgroundColor = UIColor.grayColor()
        label.textColor = UIColor.whiteColor()

        label.center = self.center
    }
}

最初一切正常:

但是当我的界限因为方向不同而改变时:

任何想法我在这里做错了什么?顺便说一句,它是某种不想增长的宽度。因为如果我设置label.numberOfLines = 0,它确实会增长,但只是在高度上。

【问题讨论】:

    标签: ios swift uiview uilabel drawrect


    【解决方案1】:

    原来你需要在再次调用sizeToFit之前将UILabelframe.size.width和/或frame.size.height设置为零,比如:

    label.frame.size.width = 0

    label.frame = CGRectZero

    就像它再次正确调整大小一样,尊重numberOfLines

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-31
      • 2012-02-04
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多