使用scrollview实现Pagecontrol以在屏幕上显示多个图像。当用户向左或向右滑动用户可以看到下一个/上一个图像时。下面是我根据图像数量创建的图像视图。这似乎不是一种优化的方式。无论如何我可以使用2或3个图像视图创建它并重复使用它们。因为,用例一次只显示一个图像。
for index in 0..<pageControl.numberOfPages {
fram.origin.x = scrollView.bounds.size.width * CGFloat(index)
fram.size.width = scrollView.bounds.size.width
fram.size.height = scrollView.frame.size.height
imageView = UIImageView(frame: fram)
imageView.setImage(images![index])
scrollView.addSubview(imageView)
}
func scrollViewDidEndDecelerating(scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.bounds.size.width)
pageControl.currentPage = Int(pageNumber)
}
请不要使用集合视图,请帮助我如何制作这种优化方式。
答案 0 :(得分:0)
听起来你实际上最终会重新实现集合视图。您不想使用UICollectionView
的任何特殊原因?
请记住,它免费为您提供错误修复 - 由Apple工程师提供。
更新如果你决定这样做,请查看2014年关于复合数据源的WWDC视频,它说明了如何避免使单元格成为数据源,而是使用表格视图进行组合而是https://developer.apple.com/videos/play/wwdc2014/232/
更新2 基本上您想要收听scrollViewDidScroll:
的{{1}}并检查哪些子视图位于UIScrollView.delegate
的可见区域之外,将其添加到可以重用而不是销毁的视图池,并在需要显示新视图时重新配置。这是表格或集合视图的工作方式(根据我的理解)