Swift_ScrollVoew&&PageControl

来源:互联网 发布:海思自动对焦算法 编辑:程序博客网 时间:2024/05/17 01:20

//

//  ViewController.swift

//  Swift_ScrollView

//

//  Created by HarrySun on 16/7/19.

//  Copyright © 2016 Mobby. All rights reserved.

//


import UIKit


class ViewController:UIViewController,UIScrollViewDelegate {


    let numOfPages =3

    let pageWidth =414

    let pageHeight =600

    

    var scrollView =UIScrollView()

    var pageControl =UIPageControl()

    

    

    

    

    overridefunc viewDidLoad(){

        super.viewDidLoad()

        

        //scrollView的初始化

        

        scrollView.frame =self.view.bounds

        //为了让内容横向滚动,设置横向内容宽度为3个页面的宽度总和

        scrollView.contentSize=CGSizeMake(CGFloat(pageWidth*numOfPages),

                                          CGFloat(pageHeight))

        scrollView.pagingEnabled =true

        scrollView.showsHorizontalScrollIndicator =false

        scrollView.showsVerticalScrollIndicator =false

        scrollView.scrollsToTop =false

        

        

        scrollView.minimumZoomScale=0.1//最小比例

        scrollView.maximumZoomScale=3//最大比例

        scrollView.bouncesZoom =false

        scrollView.delegate=self

        

        

        //添加子页面(子页面在博客下方。)

        for iin 0..<numOfPages{

            let myViewController =MyViewController(number:(i+1))

            myViewController.view.frame =CGRectMake(CGFloat(pageWidth*i),

                                                     CGFloat(0),CGFloat(pageWidth),CGFloat(pageHeight))

            let imageView =UIImageView()

            imageView.frame =CGRectMake(0,0,CGFloat(pageWidth),CGFloat(pageHeight))

            imageView.image =UIImage(named: "1.jpg")

            imageView.userInteractionEnabled =true

            imageView.tag = i +100

            myViewController.view .addSubview(imageView)

            

            scrollView.addSubview(myViewController.view)

            

        }

        self.view.addSubview(scrollView)

        

        

        

        

        

        pageControl.frame =CGRectMake(CGFloat(pageWidth /2 - 50),CGFloat(pageHeight -50), CGFloat(100),CGFloat(40))

        pageControl.backgroundColor =UIColor.redColor();

        pageControl.numberOfPages =numOfPages

        pageControl.currentPage =0

        pageControl.addTarget(self, action:#selector(pageChanged(_:)), forControlEvents:UIControlEvents.ValueChanged)// 设置点击事件

        

        self.view.addSubview(pageControl)

        

        

        

    }

    

    


    overridefunc didReceiveMemoryWarning() {

        super.didReceiveMemoryWarning()

        // Dispose of any resources that can be recreated.

    }

    

    

    

    //UIScrollViewDelegate方法,每次滚动结束后调用

    func scrollViewDidEndDecelerating(scrollView:UIScrollView) {

        

        print("停止滑动")

        //通过scrollView内容的偏移计算当前显示的是第几页

        let page =Int(scrollView.contentOffset.x / scrollView.frame.size.width)

        //设置pageController的当前页

        pageControl.currentPage = page

    }

    

    

    func scrollViewDidScroll(scrollView:UIScrollView) {

        

        print("滑动中")

    }

    

    func scrollViewDidEndDragging(scrollView:UIScrollView, willDecelerate decelerate:Bool) {

        

        print("停止拖拽")

    }

    



    //点击页控件时事件处理

    func pageChanged(sender:UIPageControl) {

        

        //根据点击的页数,计算scrollView需要显示的偏移量

        var frame =scrollView.frame

        frame.origin.x = frame.size.width * CGFloat(sender.currentPage)

        frame.origin.y =0

        //展现当前页面内容

        scrollView.scrollRectToVisible(frame, animated:true)

    }


    

    func viewForZoomingInScrollView(scrollView:UIScrollView) -> UIView? {

        

        returnself.view.viewWithTag(101)

    }

    

    

    

    func scrollViewWillBeginDragging(scrollView:UIScrollView) {

        

        print("开始拖拽视图")

    }


    

    func scrollViewWillBeginDecelerating(scrollView:UIScrollView) {

        print("将开始降速时")

    }

    

    

    func scrollViewDidEndScrollingAnimation(scrollView:UIScrollView) {

        

        print("滚动动画停止时执行,代码改变时触发,也就是setContentOffset改变时")

    }

    

    func scrollViewDidEndZooming(scrollView:UIScrollView, withView view:UIView?, atScale scale: CGFloat) {

        

        print("完成放大缩小时调用")

    }

}


-------------------------------------------------------------------------------------------------------------



//

//  MyViewController.swift

//  Swift

//

//  Created by HarrySun on 16/7/19.

//  Copyright © 2016 Mobby. All rights reserved.

//


import UIKit


class MyViewController: UIViewController {


    var number:Int!

    let colorMap = [

        1:UIColor.blackColor(),

        2:UIColor.orangeColor(),

        3:UIColor.blueColor()

    ]

    

    

    init(number initNumber:Int){

        

        self.number = initNumber

        super.init(nibName:nil, bundle: nil)

    }

    

    

    requiredinit?(coder aDecoder: NSCoder) {

        fatalError("init(coder:) has not been implemented")

    }

    

    

    

    overridefunc viewDidLoad(){

        let numberLabel =UILabel(frame:CGRectMake(130,50,50,30))

        numberLabel.text ="\(number)"

        numberLabel.textColor =UIColor.whiteColor()

        self.view.addSubview(numberLabel)

        self.view.backgroundColor =colorMap[number]

    }

    

    

    

    

}






0 0