UITtackView和UITableViewCell中的多行标签

And*_*ewC 5 uitableview uilabel autolayout ios9 uistackview

我想要一个UITableViewCell具有多个垂直堆叠UILabel的自定义,所有这些都可以包含包含多行的文本.随着UIStackViewiOS9中的新功能和单元格自我调整机制,我认为这将是直截了当的,但我不能让它工作.我正在使用Xcode 7beta3.

与标签的表视图不包裹

我创建了一个简单的测试应用.这是IB中的设置:

IB设置原型单元

UIStackView垂直与UIStackViewDistribution.FillUIStackViewAlignment.Fill,但我已经基本尝试没有成功,所有的组合.

UILabel■找numberOfLines = 0lineBreakMode = .ByWordWrapping.

代码:

class Cell: UITableViewCell {

    @IBOutlet var label1: UILabel!
    @IBOutlet var label2: UILabel!
}

class MasterViewController: UITableViewController {

    struct Data {
        let label1: String
        let label2: String
    }

    var objects = [Data]()

    override func viewDidLoad() {
        super.viewDidLoad()

        tableView.rowHeight = UITableViewAutomaticDimension
        tableView.estimatedRowHeight = 60

        createData()
    }

    private func createData() {

        for ii in 0 ..< 20 {

            let data = Data(label1: "\(ii): hello world this is a longer string that should wrap without going weird", label2: "label2 has lots of writing as well and so should wrap onto multiple lines")
            objects.append(data)
        }
    }

    // MARK: - Table View

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return objects.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Cell
        let data = objects[indexPath.row]

        cell.label1?.text = data.label1
        cell.label2?.text = data.label2

        return cell
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道测试版中是否存在错误,因为有时候其中一个标签会包装,而另一个则没有.

例如,我尝试将其嵌套UIStackView在另一个中UIStackView,如下所示:

IB中的嵌套UIStackView

我根本没有做任何代码更改.现在一个标签包装而另一个没有:

一个标签包装

任何帮助将不胜感激!

Mih*_*awk 2

问题是在单元格初始化时,单元格的宽度默认为 600,因此它将根据 600 宽度计算行的高度。这是因为单元格是在情节提要中创建的,并且具有大小类别。

我认为这将是测试版中的一个错误,作为解决方案,请将您的单元格放入 xib 中,然后使用 . 它会工作得很好。