Swift_ScrollVoew&&PageControl

//

//  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()

    

    

    

    

    override func 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 i in 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)

        

        

        

    }

    

    


    override func 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? {

        

        return self.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)

    }

    

    

    required init?(coder aDecoder: NSCoder) {

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

    }

    

    

    

    override func 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值