首页 > 解决方案 > UICollectionView。如何在没有动画的情况下使用不同的元素(不仅是第一个)呈现 viewController?

问题描述

我需要呈现 UICollectionView,带有不同的元素(不仅是第一个),没有动画。

例子

我的代码:

override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated) 

   DispatchQueue.main.async { 
       var newPoint = self.productCollectionView.contentOffset 
       newPoint.x = (UIScreen.main.bounds.width * CGFloat(self.currentPage)) + 1 
       self.productCollectionView.contentOffset = newPoint 
  } 

}

标签: iosswiftuicollectionview

解决方案


而不是设置contentOffset,调用setContentOffset(_:, animated:)具有animated:值的方法false

另外我建议删除async并将您的代码移动到viewDidLayoutSubviews. 这样,您的代码将在用户看到任何内容之前运行,但在实现视图的初始布局之后。此方法可以多次调用,因此您必须使用 Bool 实例属性来确保它只运行一次。


推荐阅读