【发布时间】: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