UIScrollView和页面控制,页面控制中断视图

时间:2014-07-04 05:35:31

标签: ios uiscrollview swift uipagecontrol

所以,我知道它之前已经完成了很多次,但我正在构建一个带有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作出反应。感谢您的帮助。

0 个答案:

没有答案