2

我正在尝试UIScrollView使用多个启用分页的图像构建一个非常简单的图像。

但是,我无法将图像正确调整到我的UIScrollView. 图像总是大于界限,因此弄乱了我的分页。

我有一个UIScollView和一个UIPageControlinInterface Builder并将其链接到我的 ViewController swift 文件中。

这是我的viewDidLoad方法 (pageImages定义为var pageImages: [UIImage] = []和:pageViewsvar 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可能设置为viewWillAppearviewDidAppear吗?

4

1 回答 1

3

尝试在以下设置您的 imageViews 大小:

  • (void)viewDidLayoutSubviews

此时,自动布局已根据您在界面生成器上定义的布局系统完成了调整视图/子视图的大小,因此如果您的计算正确(根据您的要求),这应该可以正常工作。

于 2015-04-25T18:42:45.960 回答