在 Swift 中使用 UICollectionView 的时间轴
Timeline with UICollectionView in Swift
我正在尝试为我的应用程序编写时间轴。为了给你一个洞察力,我在草图上设计了它:
我不是 Swift 方面的专家,所以我真的不知道如何编码。我考虑过创建一个 UICollectionView,并使用 indexPath 来改变单元格的设计(如果它是偶数或奇数)。
你怎么看?
如果我没理解错的话,你想知道这个设计是怎么做出来的?
你有两种方式来实现这样的设计:
第一个(最简单的方法):
您需要的只是一个顶部带有时间轴视图 (UICollectionView) 的 tableView,带有 2 个自定义集合视图单元格,一个用于奇数,另一个用于偶数
tableview 将有 2 个单元格,一个用于带图像的文本,另一个用于平面文本
如何渲染时间线:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (indexPath.row + 1) % 2 == 0 {
return even cell
} else {
return odd cell
}
如何在用户滚动时间轴时通过计算 indexPath 来检测偶数或奇数:
@IBOutlet weak var collectionViewTimeLine: UICollectionView!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let timeline = scrollView as? collectionViewTimeLine {
// calculate and find selected indexPath
// reload data
}
}
第二种方式:
当您想要在用户滚动时间轴时平滑地动画内容时使用这种方式
您需要 2 个 UICollectionView,第一个用于时间线,第二个用于内容
当用户滚动时间轴时,您滚动 collectionViewContent
@IBOutlet weak var collectionViewTimeLine: UICollectionView!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let timeline = scrollView as? collectionViewTimeLine {
// calculate and find selected indexPath
// scroll collectionViewContent with selected indexPath
}
}
我正在尝试为我的应用程序编写时间轴。为了给你一个洞察力,我在草图上设计了它:
我不是 Swift 方面的专家,所以我真的不知道如何编码。我考虑过创建一个 UICollectionView,并使用 indexPath 来改变单元格的设计(如果它是偶数或奇数)。
你怎么看?
如果我没理解错的话,你想知道这个设计是怎么做出来的?
你有两种方式来实现这样的设计:
第一个(最简单的方法): 您需要的只是一个顶部带有时间轴视图 (UICollectionView) 的 tableView,带有 2 个自定义集合视图单元格,一个用于奇数,另一个用于偶数 tableview 将有 2 个单元格,一个用于带图像的文本,另一个用于平面文本
如何渲染时间线:
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
if (indexPath.row + 1) % 2 == 0 {
return even cell
} else {
return odd cell
}
如何在用户滚动时间轴时通过计算 indexPath 来检测偶数或奇数:
@IBOutlet weak var collectionViewTimeLine: UICollectionView!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let timeline = scrollView as? collectionViewTimeLine {
// calculate and find selected indexPath
// reload data
}
}
第二种方式: 当您想要在用户滚动时间轴时平滑地动画内容时使用这种方式
您需要 2 个 UICollectionView,第一个用于时间线,第二个用于内容 当用户滚动时间轴时,您滚动 collectionViewContent
@IBOutlet weak var collectionViewTimeLine: UICollectionView!
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if let timeline = scrollView as? collectionViewTimeLine {
// calculate and find selected indexPath
// scroll collectionViewContent with selected indexPath
}
}