所以,我知道它之前已经完成了很多次,但我正在构建一个带有UIScrollView和UIPageControl的ImageViewer。我在Swift中构建它。然而,我遇到了一个我似乎无法诊断出来的问题。我有一个有趣的设置,通过将视图拆分为容器来最小化代码的长页。一个用于tableview,另一个用于分页图像。这是故事板的图像。 http://imgur.com/ZqvNgjy所以在第一个容器视图中,它是一个带有UIScrollView和UIPageControl的简单UIViewController。我可以确认UIPageControl不在UIScrollView的视图层次结构中。现在这里是我用来设置所有内容的代码。
import UIKit
//Set Image Array
var imagelist: String[] = ["Home Image 1.png", "info.png"]
//Set Page Numbers
var numpages = imagelist.count
class HomeImageView: UIViewController, UIScrollViewDelegate {
//IBOutlets & Propertys
@IBOutlet var scrollView: UIScrollView
@IBOutlet var pageControl: UIPageControl
override func viewDidLoad() {
super.viewDidLoad()
//Setup Page Control
pageControl.numberOfPages = numpages
pageControl.currentPage = 0
//Setup Scroll View
scrollView.pagingEnabled = true;
scrollView.scrollEnabled = true
scrollView.showsHorizontalScrollIndicator = false;
scrollView.showsVerticalScrollIndicator = false;
scrollView.bounces = true;
scrollView.scrollsToTop = false
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * CGFloat(numpages), scrollView.frame.size.height)
}
override func viewWillAppear(animated: Bool) {
//Setup UIViews with Images
for var z = 0; z < numpages; z++ {
let mainFrame: CGRect = CGRectMake(scrollView.frame.size.width * CGFloat(z), 0, scrollView.frame.size.width, scrollView.frame.size.height)
var image: UIImageView = UIImageView(frame: mainFrame)
image.image = UIImage(named: imagelist[z])
image.clipsToBounds = true
image.contentMode = UIViewContentMode.ScaleAspectFit
scrollView.addSubview(image)
}
func scrollViewDidScroll(scrollview: UIScrollView) {
var pageSize: Float = Float(scrollView.bounds.size.width)
var page: Float = floorf((Float(scrollview.contentOffset.x) - pageSize / 2.0) / pageSize) + 1
// Bound page limits
if (page >= Float(numpages)) {
page = Float(numpages) - 1;
} else if (page < 0) {
page = 0;
}
pageControl.currentPage = Int(page)
println(pageControl.currentPage)
}
}
}
因此,这就是问题所在。当我运行它时,它并不完全符合我的预期。模拟器像这样http://imgur.com/RVlKxdf启动,我可以在图像边界外移动视图。然而,当我更改视图层次结构以便UIPageControl位于UIScrollView(基本上删除它)之后。问题完全消失了。对齐并允许仅在我想要的范围内移动。我不知道为什么UIScrollView在UIPageControl超出其视图层次结构时会对UIPageControl作出反应。感谢您的帮助。