gpt4 book ai didi

ios - 更改 UICollectionView 大小而不使用 viewDidLayoutSubviews

转载 作者:行者123 更新时间:2023-11-29 01:19:40 25 4
gpt4 key购买 nike

我在 ScrollView 中有一个 CollectionView(垂直),使其可以在两个方向上滚动。

用户需要在房间里选择座位,房间可以有任意数量的列和行,我需要对座位进行排序

如果我在 viewDidLayoutSubviews 的 Collection View 上放置一个宽度值(例如 800),它会起作用

- (void)viewDidLayoutSubviews {
self.collectionView.frame = CGRectMake(0, 0, 800, self.collectionView.frame.size.height);
self.scrollView.contentSize = self.collectionView.frame.size;

}

问题是,我在异步任务中加载席位,如果我使用

self.collectionView.frame = CGRectMake(0, 0, 113*columns, 113*rows);
self.scrollView.contentSize = self.collectionView.frame.size;

加载席位后它不起作用。

我不能把尺寸放在 viewDidLayoutSubviews 中,因为我还不知道有多少个座位!

加载数据后如何做?

最佳答案

您可以调用setNeedsLayoutlayoutIfNeeded收到数据后。这将要求 View 更新 subview 的布局,这将触发对 viewDidLayoutSubviews 的调用。

请注意,您需要更新 viewDidLayoutSubviews 方法以考虑到 columnsrows 的新值。

两者的区别在于layoutIfNeeded是立竿见影的效果,而setNeedsLayout会在下一个更新周期触发重新布局。性能方面 setNeedsLayout 是首选,因为它还合并了多个布局失效,但是根据您是否有动画,layoutIfNeeded 可能更可取。

关于ios - 更改 UICollectionView 大小而不使用 viewDidLayoutSubviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34764176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com