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

Swift实现UIScrollView展示多个UIViewController

2016-02-21 11:15 330 查看
效果图:



----------FirstPageViewController-----------

override func viewDidLoad()
{
super.viewDidLoad()

self.view.backgroundColor = UIColor.brownColor()

}


----------SecondPageViewController-----------

override func viewDidLoad()
{
super.viewDidLoad()

self.view.backgroundColor = UIColor.purpleColor()
}


----------ThirdPageViewController-----------

override func viewDidLoad()
{
super.viewDidLoad()

self.view.backgroundColor = UIColor.blueColor()

}


---------------PageViewController--------------------

//
//  PageControlViewController.swift
//

import UIKit

class PageControlViewController: UIViewController, UIScrollViewDelegate
{

var pageControl: UIPageControl?
var scrollView: UIScrollView?

var isPageControlUsed = false

var screenFrame :CGRect?

override func viewDidLoad()
{
super.viewDidLoad()

self.title = "UIPageControl"
self.view.backgroundColor = UIColor.whiteColor()
screenFrame = UIScreen.mainScreen().bounds
let screenWidth = screenFrame!.width
let screenHeight = screenFrame!.height

var view = UIView(frame: CGRectMake(0, 0, screenWidth, 60))
view.backgroundColor = UIColor.whiteColor()
self.view.addSubview(view)

scrollView = UIScrollView(frame: CGRectMake(0, 60, screenWidth, screenHeight - 60))
pageControl = UIPageControl(frame: CGRectMake(0, screenHeight - 40, screenWidth, 40))
scrollView!.pagingEnabled = true

scrollView!.contentSize = CGSizeMake(screenWidth * 3, screenHeight - 60)
let firstViewController = FirstPageViewController()
firstViewController.view.frame = CGRectMake(0, 0, screenWidth, screenHeight - 60)
let secondViewController = SecondPageViewController()
secondViewController.view.frame = CGRectMake(screenWidth, 0, screenWidth, screenHeight - 60)
let thirdViewController = ThirdPageViewController()
thirdViewController.view.frame = CGRectMake(screenWidth * 2, 0, screenWidth, screenHeight - 60)

scrollView!.addSubview(firstViewController.view)
scrollView!.addSubview(secondViewController.view)
scrollView!.addSubview(thirdViewController.view)

scrollView!.delegate = self

self.view.addSubview(scrollView!)

pageControl!.numberOfPages = 3
pageControl!.currentPage = 0
pageControl!.addTarget(self, action: "pageDidChanged:", forControlEvents: UIControlEvents.ValueChanged)

self.view.addSubview(pageControl!)

installCodeBarBtn()
}

func pageDidChanged(obj : UIPageControl) -> Void
{
var currentPage = obj.currentPage
var frame = scrollView!.frame
frame.origin.x = (CGFloat)(currentPage) * frame.size.width

scrollView!.scrollRectToVisible(frame, animated: true)
isPageControlUsed = true
}

func scrollViewDidScroll(scrollView: UIScrollView)
{
if(!isPageControlUsed)
{
let pageWidth = scrollView.frame.size.width
let page = floor((scrollView.contentOffset.x - pageWidth/2)/pageWidth) + 1
pageControl!.currentPage = (Int)(page)
}
}

func scrollViewDidEndDecelerating(scrollView: UIScrollView)
{
isPageControlUsed = false
}

override func didReceiveMemoryWarning()
{
super.didReceiveMemoryWarning()
}

func installCodeBarBtn() -> Void
{
var rightBar = UIBarButtonItem(title: "Code", style: UIBarButtonItemStyle.Done, target: self, action: "toCodeViewPad")
self.navigationItem.rightBarButtonItem = rightBar
}

func toCodeViewPad() -> Void
{
let codeViewController = PageCodeViewController()
self.navigationController!.pushViewController(codeViewController, animated: true)
}

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