根据 UICollectionView 内容快速移动视图
Posted
技术标签:
【中文标题】根据 UICollectionView 内容快速移动视图【英文标题】:Move a view depending on UICollectionView content offside swift 【发布时间】:2020-02-07 17:59:40 【问题描述】:您好:我正在尝试创建一个collectionView,页面顶部有一个segmentedControl,它会根据collectionView的当前页面更改它的索引
这是我用来更改选择器的代码:
override func scrollViewDidScroll(_ scrollView: UIScrollView)
let offset = scrollView.contentOffset.x
self.selectorView.frame = CGRect(x: offset/3, y: 0, width: self.view.frame.width/3, height: 2)
但是,这根本不会移动 selectorView
,所以我尝试将进程移动到后台线程:
override func scrollViewDidScroll(_ scrollView: UIScrollView)
let offset = scrollView.contentOffset.x
DispatchQueue.main.async
self.selectorView.frame = CGRect(x: offset/3, y: 0, width: self.view.frame.width/3, height: 2)
这可行,但这是滞后和错误的结果:screen recording on YouTube
有谁知道我该如何解决这个问题?
【问题讨论】:
【参考方案1】:我会根据页面的当前索引设置 segmentedControl selectedSegmentIndex。这是之前关于如何计算索引的主题:Click
您可以做的另一件事是避免使用集合视图并切换到页面视图控制器,该控制器具有当前页面的指示器,并且能够滚动到不同的部分。一开始配置它们可能会很棘手,但它们值得使用,而且用户非常熟悉这种设计。我知道这可能不是当前问题的确切解决方案,但它会是一种规避问题的方法。
【讨论】:
问题是我需要让彩色视图根据滚动视图移动,因此这不是正常的 UISegmentedControl。 不知道顶部的指示器是什么(因为它不是内置的分段控件)很难知道要建议什么,但根据它是什么,您可以设置一个标记每个元素,然后根据显示的视图切换选定的元素(例如,使用插座集合)。以上是关于根据 UICollectionView 内容快速移动视图的主要内容,如果未能解决你的问题,请参考以下文章
如何快速在uicollectionview中动态访问单元格属性
如何根据 UITableViewCell 中的内容调整水平 UICollectionView 的高度