UILabel 中的多行未显示全文

AFW*_*AFW 5 label uiscrollview ios swift

在我的代码(Swift 2.0 iOS 9)中,我创建了一个UIScrollView并添加了一个UILabel到 ScrollView 以显示大量文本。文本通过加载viewDidLoad()并从包中的文件加载。

我用过numberOfLines = 0label.lineBreakMode = .ByWordWrapping但只显示了 8 行文本。在代码下方,您将看到代码结果的图像。我给了颜色UILabelUIScrollView显示了它们的界限。

override func viewDidLoad() {
    super.viewDidLoad()
    self.configureView()
    let sv = UIScrollView(frame: self.view.bounds)
    sv.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
    self.view.addSubview(sv)
    sv.backgroundColor = UIColor.greenColor()
    var y: CGFloat = 10
    let file = detailItem as! String
    if let sectionsFile = NSBundle.mainBundle().pathForResource(file, ofType: "txt") {
        if let sectionText = try? String(contentsOfFile: sectionsFile, usedEncoding: nil) {
            let label = UILabel()
            label.numberOfLines = 0
            label.text = sectionText
            label.sizeToFit()
            label.frame.origin = CGPointMake(10,y)
            sv.addSubview(label)
            y += label.bounds.size.height + 10
            label.lineBreakMode = .ByWordWrapping
            label.frame.size.width = self.view.bounds.size.width - 20
            label.backgroundColor = UIColor.yellowColor()
            label.autoresizingMask = .FlexibleWidth
        }
        var sz = sv.bounds.size
        sz.height = y
        sv.contentSize = sz
    }
}
Run Code Online (Sandbox Code Playgroud)

这是代码的结果:http : //i.stack.imgur.com/Zh4En.png

我需要做什么才能显示所有文本?或者,是否有更好的方法来实现呈现信息文本的相同目标?

hyb*_*ttt 3

查看您的代码,您正在调用sizeToFit来设置标签本身的大小,但几行之后您将标签框架的宽度设置为某个值,而高度保持不变。新的宽度可能小于 sizeToFit 调用期间给定的一个标签,这就是某些文本不适合的原因。

尝试这个:

let desiredLabelWidth = self.view.bounds.size.width - 20
let size = label.sizeThatFits(CGSize(desiredLabelWidth, CGFloat.max))
label.frame = CGRect(x: 10, y: y, width: desiredLabelWidth, height: size.height)
Run Code Online (Sandbox Code Playgroud)

这会向标签询问给定宽度的尺寸,然后相应地设置框架。

此外,在您的代码中,具有自动调整大小蒙版label.autoresizingMask = .FlexibleWidth没有意义,因为宽度会随超级视图一起更改,但高度不会,因此标签的新大小将与它所具有的文本不匹配。