您的位置:首页 > 移动开发 > Swift

Swift_ScrollVoew&&PageControl

2016-07-19 14:53 344 查看
//

//  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]

    }

    

    

    

    

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息