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