【问题标题】:How to create three image views for showing n number of images by using reusing image views?如何通过重用图像视图来创建三个图像视图以显示 n 个图像?
【发布时间】:2016-11-07 23:15:25
【问题描述】:

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)
}

请帮助我如何在不使用集合视图的情况下制作这种优化方式。

【问题讨论】:

    标签: ios swift uiscrollview scrollview uipagecontrol


    【解决方案1】:

    听起来您实际上最终要重新实现集合视图。您不想使用UICollectionView 的任何特殊原因?

    请记住,它免费为您提供错误修复 - 由 Apple 工程师提供。

    更新如果您决定这样做,请查看 2014 年关于复合数据源的 WWDC 视频,它说明了如何避免将单元格作为数据源,而是将其与表格视图组合而是https://developer.apple.com/videos/play/wwdc2014/232/

    更新 2 基本上你想听 scrollViewDidScroll:UIScrollView.delegate 并检查哪些子视图在 UIScrollView 的可见区域之外,将它们添加到可用的视图池中重用而不是销毁,并在需要显示新视图时重新配置。这就是表格或集合视图的工作方式(据我所知)

    【讨论】:

    • 我在 tableviewcell 中实现 uipagecontrol,所以我不想在单元格中包含集合视图
    • 我们实际上是在集合和表格视图单元格中使用集合视图,添加页面控制器作为第二个子视图(集合视图上方)非常简单,我们还没有遇到任何问题。但我明白每个人的情况都不一样
    • 如果我没有找到上述问题的解决方案,那么我最终将使用 tableviewcell 中的集合视图。
    • 知道了,我更新了我的答案,提供了一个视频链接,如果你走这条路可能会有所帮助
    • 使用滚动视图更新了高级解决方案,希望对您有所帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多