gpt4 book ai didi

swift - UICollectionView insertItems(位于:) not completing before other code

转载 作者:行者123 更新时间:2023-11-30 10:38:04 25 4
gpt4 key购买 nike

非常感谢您抽出时间!我一直在使用 Collection View ,并且完全被我的代码的一小部分所困扰,它的行为不符合我的预期。这是两行(我认为是唯一相关的):

diceCollectionView.insertItems(at: [indexPath])
diceCollectionView.contentInset.top =
max((diceCollectionView.frame.height -
diceCollectionView.contentSize.height) / 2, 0)

我正在构建的应用程序是一个掷骰子计算器,GUI 本质上是一个 Collection View ,用户可以在其中按下按钮将“骰子”添加到 View 中。我想要完成的是通过在插入项目后添加顶部内容插图来使 Collection View 中的项目垂直居中。然而,发生的情况似乎是在插入项目之前计算内容插入,因此计算中使用的内容大小是引入项目之前的内容大小。 p>

这是添加单个项目时的屏幕截图(看看单元格的顶部如何位于 Collection View 的中心):

Single item added

添加第二个后,内容插入计算正确:

Second item added

我在这里这样做是错误的吗?我认为答案可能在于闭包或使用调度队列,但我在这些方面没有任何运气。我真是难住了!再次感谢您的帮助。

最佳答案

尝试在调用 insertItems 完成处理程序后设置 contentInsets

diceCollectionView.performBatchUpdates({
self.diceCollectionView.insertItems(at: [indexPath])
}) { (completed) -> Void in
self.diceCollectionView.contentInset.top =
max((self.diceCollectionView.frame.height - self.diceCollectionView.contentSize.height) / 2, 0)
}

关于swift - UICollectionView insertItems(位于:) not completing before other code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57480724/

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