调整UITableView的大小以适应ios 11上的内容

时间:2017-12-27 12:20:17

标签: swift uitableview ios11 uitableviewautomaticdimension

鉴于ios 11上的UITableView中的垃圾内容大小如何获得具有可变高度单元格的tableview以自动调整到该内容?

答案:Resizing UITableView to fit content 腐烂了,不再适用于ios 11

1 个答案:

答案 0 :(得分:4)

UITableView使用自动维度 - UITableViewAutomaticDimension时,它会在您滚动时计算contentSize 动态

因此,解决方案是使用KVO捕获这些更改:

var contentSizeObservation: NSKeyValueObservation?

override func viewDidLoad() {
    super.viewDidLoad()

    contentSizeObservation = tableView.observe(\.contentSize, options: [.new], changeHandler: { tableView, value in
        // Do the setup here, this will be called multiple times
    })
}

重要

您需要将contentSizeObservation定义为全局(作为类成员),否则changeHandler块不会被调用,因为该变量将被ARC清除。