我试图构建一个非常简单的UIScrollView
,其中包含几个启用了分页的图像。
然而,我无法将图像正确地调整到我UIScrollView
的范围。图像总是比边界大,因此弄乱了我的分页。
我在UIScollView
中有一个UIPageControl
和一个Interface Builder
,并将其链接到我的ViewController swift文件中。
以下是我的viewDidLoad
方法(pageImages
定义为var pageImages: [UIImage] = []
,pageViews
定义为var pageViews: [UIImageView?] = []
:
override func viewDidLoad() {
scrollView.delegate = self
scrollView.pagingEnabled = true
scrollView.scrollEnabled = true
scrollView.showsHorizontalScrollIndicator = false
scrollView.showsVerticalScrollIndicator = false
scrollView.bounces = true
scrollView.scrollsToTop = false
pageImages = [UIImage(named: "image1")!,
UIImage(named: "image2")!,
UIImage(named: "image3")!,
UIImage(named: "image4")!,
UIImage(named: "image5")!]
let pageCount = pageImages.count
pageControl.currentPage = 0
pageControl.numberOfPages = pageCount
for (var i=0; i<pageCount; i++) {
var xOrigin: CGFloat = CGFloat(i) * scrollView.bounds.size.width
let imageView: UIImageView = UIImageView(frame: CGRectMake(xOrigin, 0, scrollView.bounds.size.width, scrollView.bounds.size.height))
imageView.image = pageImages[i]
imageView.contentMode = UIViewContentMode.ScaleAspectFill
imageView.clipsToBounds = true
scrollView.addSubview(imageView)
}
let pagesScrollViewSize = scrollView.frame.size
scrollView.contentSize = CGSize(width: pagesScrollViewSize.width * CGFloat(pageImages.count),
height: pagesScrollViewSize.height)
}
我的scrollViewDidScroll
方法如下:
func scrollViewDidScroll(scrollView: UIScrollView) {
let pageWidth = self.scrollView.frame.size.width
let page = Int(floor((self.scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1)
self.pageControl.currentPage = page
}
有人能发现我的错误吗?我是否必须将contentMode
设置为viewWillAppear
或viewDidAppear
?
答案 0 :(得分:3)
尝试在以下位置设置imageViews尺寸:
此时,autolayout已根据您在界面构建器上定义的布局系统完成了视图/子视图的大小调整,因此如果您的计算是正确的(根据您的要求),这应该可以正常工作。