在我的代码(
Swift 2.0 iOS 9)中,我创建了一个UIScrollView,并在ScrollView中添加了一个UILabel来显示大量文本.文本通过viewDidLoad()加载,并从包中的文件加载.
我使用了numberOfLines = 0和label.lineBreakMode = .ByWordWrapping,但只显示了8行文字.在代码下方,您将看到代码结果的图像.我给UILabel和UIScrollView提供了颜色以显示它们的界限.
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
}
}
这是代码的结果:http://i.stack.imgur.com/Zh4En.png
我需要做什么才能显示所有文本?或者,是否有更好的方法来实现呈现信息文本的相同目标?
最佳答案 查看你的代码,你调用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)
这会向标签询问具有给定宽度的尺寸,然后相应地设置框架.
另外在你的代码中有autoresizing mask label.autoresizingMask = .FlexibleWidth没有意义,因为宽度会与superview一起改变,但高度不会,所以你的标签的新大小将与它拥有的文本不匹配.