gpt4 book ai didi

ios - UICollectionViewFlowLayout 中的动画更改

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:59 27 4
gpt4 key购买 nike

我正在使用 UICollectionViewFlowLayout 在水平 ScrollView 中排列 View 图 block 。默认情况下,我使用 UICollectionViewDelegateFlowLayout 将它们设为方形:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var nominalSize = CGSize(width: collectionView.frame.height, height: collectionView.frame.height)
return nominalSize
}

通过这种方式,我得到了方形图 block ,其大小与 collectionView 的当前大小相适应。但是,在某些情况下,我修改了某些图 block 的标称尺寸,因此它看起来有点像:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
var nominalSize = CGSize(width: collectionView.frame.height, height: collectionView.frame.height)
if someTest(indexPath) {
nominalSize = self.tweakNominalSize(nominalSize)
}
return nominalSize
}

我还没有弄清楚的是如何触发 Collection View 以 A) 召回重新布局的委托(delegate)和 B) 如何让它为更改设置动画。

我尝试过的:

1)

self.myCollectionView.setNeedsLayout()
UIView.animateWithDuration(200.milliseconds) {
self.myCollectionView.layoutIfNeeded()
}

这什么都不做。委托(delegate)回调中的 print() 语句显示它从未被调用。

2)

self.schedulesView.setCollectionViewLayout(
self.schedulesView.collectionViewLayout,
animated: true)

这也什么都不做。我不确定它是聪明还是什么。也许它足够聪明,注意到它们是相同的并选择退出?

3)

self.schedulesView.startInteractiveTransition(
to: self.schedulesView.collectionViewLayout,
completion: nil)
self.schedulesView.finishInteractiveTransition()

这确实会导致布局发生!但一点也不生动。它只是突然改变。它似乎将图 block 的右侧保持在原来的位置,而不是左侧,并且它似乎在我在两次调用之间进行的其他 UI 更改之后明显发生。

最佳答案

你的 collectionView(_:layout:sizeForItemAt:) 在我看来是正确的(我有类似的东西)。

您需要在进行更改之后和调用 layoutIfNeeded 之前调用 performBatchUpdates(_:completion:)。



// Some call that makes your call to `someTest()` in `collectionView(_:layout:sizeForItemAt:)` return what you want
myCollectionView.performBatchUpdates(nil, completion: nil)
myCollectionView.layoutIfNeeded()

不必调用 myCollectionView.setNeedsLayout(),因为 performBatchUpdates(_,completion) 会为您设置。

关于ios - UICollectionViewFlowLayout 中的动画更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41066217/

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