【问题标题】:Is it OK to modify the `intrinsicContentSize` method for `UITableView` and `UICollectionView`?修改 `UITableView` 和 `UICollectionView` 的 `intrinsicContentSize` 方法可以吗?
【发布时间】:2016-04-07 08:23:05
【问题描述】:

我想将UITableViewUICollectionView 与自动布局一起使用。但是由于它们没有intrinsicContentSize 方法,因此很难为所有视图设置约束。

如果我修改它们的 intrinsicContentSize 方法以返回 contentSizeUITableViewself.collectionViewLayout.collectionViewContentSizeUICollectionView 是否可以?

【问题讨论】:

    标签: ios uitableview autolayout uicollectionview


    【解决方案1】:

    关于intrinsicContentSize documentation 声明:

    重写此方法允许自定义视图与 布局系统根据其内容想要的大小。

    由于UITableViewUICollectionView 都是UIView 的子类,因此此方法也必须适用于它们。我在文档中没有看到任何关于与他们一起使用它的警告。

    您还可以查看这个很棒的 tutorial,它涉及自动布局,尤其是内在内容大小。请注意以下几点:

    要在自定义视图中实现固有内容大小,您必须 做两件事:覆盖 intrinsicContentSize 以返回适当的 内容的大小,并在任何时候调用 invalidateIntrinsicContentSize 某些会影响内在内容大小的变化。

    因此,当您的表视图重新加载数据、插入新行等时,请不要忘记调用 invalidateIntrinsicContentSizeUICollectionView 也是如此。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我只是想知道为什么 UIKIT 不默认这样做是否可以接受。
    • Idk,也许这是因为他们不想在没有明确用户请求的情况下(通过子类化 UITableViewUICollectionView)在幕后添加为 intrinsicContentSize 生成私有约束的开销。
    猜你喜欢
    • 2016-08-05
    • 2013-10-22
    • 1970-01-01
    • 2022-12-30
    • 2020-04-24
    • 1970-01-01
    • 2017-02-16
    • 2020-10-17
    • 1970-01-01
    相关资源
    最近更新 更多