动态调整 UITableView 和 Today Extension 的大小

Posted

技术标签:

【中文标题】动态调整 UITableView 和 Today Extension 的大小【英文标题】:Resize UITableView and Today Extension dynamically 【发布时间】:2014-09-23 01:03:53 【问题描述】:

在尝试根据其内容大小动态调整我的 UITableView 的大小并失败后:

    self.tableViewPairedDevices.sizeToFit()

我试过这个,只要我的 Today Widget 足够高以完全显示它,它就可以正常工作:

    var frame:CGRect = self.tableViewPairedDevices.frame
    frame.size.height = self.tableViewPairedDevices.contentSize.height
    self.tableViewPairedDevices.frame = frame

我的下一个挑战是让我的 ios 8 Today Widget 根据 UITableView 的大小调整大小,我几乎解决了这个问题:

    self.preferredContentSize = self.tableViewPairedDevices.contentSize;
    self.tableViewPairedDevices.setTranslatesAutoresizingMaskIntoConstraints(false)

问题是一次只有一个工作,如果 UITableView 被调整大小,扩展的视图不会,如果我注释掉调整 UITableView 大小的代码,今天扩展会成功调整大小(奇怪的事情是它知道 UITableView 应该是什么大小,即使 UITableView 本身没有调整大小)但 UITableView 不知道。

关于如何实现这两个目标的任何建议?

非常感谢!

【问题讨论】:

【参考方案1】:

通过禁用扩展视图上的自动布局,我能够使上述代码完美运行

【讨论】:

【参考方案2】:

别忘了 UITableView 里面有一个 Scroll。您需要以某种方式定义高度。

我向 UITableView 添加了一个高度约束,然后将该值更新为 contentSize.height

这行得通。

【讨论】:

以上是关于动态调整 UITableView 和 Today Extension 的大小的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 页脚中动态设置和调整标签大小

动态调整 UITableView 高度

如何根据 UITableView 滚动动态调整 UITableViewCell 的大小?

动态调整UITableView的大小,该大小将显示为不可滚动的内容列表

UITableView:如何知道 TableView 的所有具有动态单元格高度的单元格何时被调整大小?

如何根据ios 8中的内容动态调整UITableview Header高度