几天来,我一直致力于解决我应用中的一个特定问题,但没有成功。我有一个 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/