ios - UIScrollView 中缺少图像

标签 ios swift uiscrollview uiimageview uiimage

几天来,我一直致力于解决我应用中的一个特定问题,但没有成功。我有一个 UIScrollView,它的使用方式与 App Store 中显示屏幕截图的方式基本相同。

我遇到的问题是,出于某种原因,只显示了两张图片(应该有五张)。我已经确认这不是图像本身的问题,所以它一定与代码有关。奇怪的是,我的应用程序中实际上还有另一个 UIScrollView,它做几乎完全相同的事情,但有三个标签,而且工作正常。

这是我的代码:

覆盖函数 awakeFromNib() { super.awakeFromNib()

    sixPlusImages = [
        UIImage(named: "Glance6Plus.png")!,
        UIImage(named: "Format6Plus.png")!,
        UIImage(named: "Swipe6Plus.png")!,
        UIImage(named: "Currencies6Plus.png")!,
        UIImage(named: "Search6Plus.png")!
    ]

    let pageCount = sixPlusImages.count

    for _ in 0..<pageCount {
        pageViews.append(nil)
    }

    let pagesScrollViewSize = scrollView.frame.size
    scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(sixPlusImages.count), height: pagesScrollViewSize.height)

    loadVisiblePages()
}

func loadPage(page: Int) {
    if page < 0 || page >= pageViews.count {
        return
    }

    if let pageView = pageViews[page] {
        return
    } else {
        var frame =  scrollView.frame //CGRect(x: 0, y: 0, width: 200, height: scrollView.bounds.height)
        frame.origin.x = frame.size.width * CGFloat(page)
        frame.origin.y = 0.0

        let newPageView = UIImageView(image: sixPlusImages[page])
        newPageView.contentMode = .ScaleAspectFit
        newPageView.frame = frame
        scrollView.addSubview(newPageView)

        pageViews[page] = newPageView
    }
}

func loadVisiblePages() {
    let pageWidth = scrollView.frame.size.width
    page = Int(floor((scrollView.contentOffset.x * 2.0 + pageWidth) / (pageWidth * 2.0)))

    let firstPage = page - 1
    let lastPage = page + 1

    for var index = 0; index < firstPage; ++index {
        purgePage(index)
    }

    for index in firstPage...lastPage {
        loadPage(index)
    }

    for var index = lastPage+1; index < sixPlusImages.count; ++index {
        purgePage(index)
    }
}

func scrollViewDidScroll(scrollView: UIScrollView) {
    loadVisiblePages()
}

func purgePage(page: Int) {
    if page < 0 || page >= sixPlusImages.count {
        return
    }

    if let pageView = pageViews[page] {
        pageView.removeFromSuperview()
        pageViews[page] = nil
    }
}

所以就像我说的,前两张图片正在显示,但其他三张只是空白页。

有人看到任何问题吗?

最佳答案

将 UIScrollViewDelegate 添加到类中:

class MyViewController: UIViewController, UIScrollViewDelegate {

}

然后在 Storyboard中,确保从 ScrollView 右键单击/拖动到 View Controller ,单击委托(delegate)。

关于ios - UIScrollView 中缺少图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29801435/

相关文章:

arrays - 表达式对于编译器来说太复杂 : an array with 14 attributes

ios - 如何从选项卡栏 Controller 访问 subview Controller

ios - UILabel 自动布局忽略 iOS 8.1 和 8.2 上的 UITableViewCell 的左边距

ios - SceneKit通过特定索引有选择地为面部着色

ios - 如何使scrollView仅在键盘快速出现时滚动

ios - UIScrollView:无限滚动显示斐波那契数

iphone - 如何从我的 iPhone 应用程序中获取打印输出?

ios - AudioKit AKPlayer 无法回环到 setPosition 开头

iOS 测试目标无法访问目标 pod

ios - Apache Usergrid Swift SDK 访问 Assets 图像