IOS 使用UIPageViewController创建开始屏幕 附代码

IOS Swift Use UIPageViewController Build Tutorial Screen

Reproduced in Strings@Farbox.





这里写图片描述

Create Xcode Project

  • Create a Xcode project
    singleView app, drag a new view controller and page view controller into storyboard. Let one as root page and other as tutorial page.

这里写图片描述

  • Two swift class for two view controller.
    Set Root Page as initial view controller, set class for this controller.

这里写图片描述

这里写图片描述

Set imageView, label and thier outlet into tutorial page view controller for tutorialPage.swift which I guess you are familiar with. Name the imageView as image and Label as label.

这里写图片描述

  • Set storyboard ID
    Select Page View Controller and in the identity inspector enter the text PageViewController. Select tutorial page and in the identity inspector enter the text PageContentViewController.
    这里写图片描述

Set page view controller transistion style to Scroll.

这里写图片描述

Code for ViewController

Add following into tutorialPage.swift:

    var pageIndex:UInt = 0
    var imageFile:String = ""
    var textTitle:String = ""

    override func viewDidLoad() {
        super.viewDidLoad()
        self.image.image = UIImage(named: imageFile)
        self.label.text = textTitle

    }

Let rootPage adopt UIPageViewControllerDataSource protocol:

class rootPage: UIViewController, UIPageViewControllerDataSource

Add following into rootPage.swift :

    var pageViewController: UIPageViewController?
    var arrayPageTitles: NSArray?
    var arrayImages: NSArray?
    let introText1 = "first screen"
    let introText2 = "mid screen"
    let introText3 = "last screen"

Prepare three picture named introductionPic1.jpg… and drap into your project.

To perform scroll page and confirm the UIPageViewControllerDataSource protocol, add following into rootPage.swift:

 override func viewDidLoad() {
        super.viewDidLoad()
        arrayPageTitles = [introText1, introText2, introText3]
        arrayImages = ["introductionPic1.jpg", "introductionPic2.jpg", "introductionPic3.jpg"]
        self.pageViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageViewController") as? UIPageViewController
        self.pageViewController?.dataSource = self
        let startingViewController = self.viewControllerAtIndex(0)
        let viewControllers: NSArray = [startingViewController!]
        self.pageViewController?.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: false, completion: nil)

        self.pageViewController!.view.frame = CGRectMake(0, 0, self.view.frame.width, self.view.frame.height)
        self.addChildViewController(pageViewController!)
        self.view.addSubview(pageViewController!.view)
        self.pageViewController?.didMoveToParentViewController(self)
    }

    func viewControllerAtIndex(index: UInt) -> tutorialPage? {
        if ((self.arrayPageTitles!.count == 0) || (Int(index) >= self.arrayPageTitles!.count)) {
            return nil
        }

        let pageContentViewController = self.storyboard?.instantiateViewControllerWithIdentifier("PageContentViewController") as! tutorialPage
        pageContentViewController.imageFile = self.arrayImages![Int(index)] as! String
        pageContentViewController.textTitle = self.arrayPageTitles![Int(index)] as! String
        pageContentViewController.pageIndex = index

        return pageContentViewController
    }
    func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? {
        var index = (viewController as! tutorialPage).pageIndex
        if (index == 0 || Int(index) == NSNotFound) {
            return nil;
        }
        index--
        return self.viewControllerAtIndex(index)
    }

    func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? {
        var index = (viewController as! tutorialPage).pageIndex

        if Int(index) == NSNotFound {
            return nil
        }

        index++

        if Int(index) == arrayPageTitles!.count {
            return nil
        }

        return self.viewControllerAtIndex(index)
    }

    func presentationCountForPageViewController(pageViewController: UIPageViewController) -> Int {
        return self.arrayPageTitles!.count
    }

    func presentationIndexForPageViewController(pageViewController: UIPageViewController) -> Int {
        return 0
    }

Add following to AppDelegate.swift

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        // Override point for customization after application launch.
        let pageControll = UIPageControl.appearance()
        pageControll.pageIndicatorTintColor = UIColor.lightGrayColor()
        pageControll.currentPageIndicatorTintColor = UIColor.blackColor()
        pageControll.backgroundColor = UIColor.whiteColor()
        return true
    }

Run your program and have fun~

To download source code on Github.

Reproduced in Strings@Farbox.

Reference:appGURUZ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值