018 UIPageControlの表示

Last Update : 2015/09/28
Xcode7.0
Swift2.0

Swift3.0に対応した新サイトオープンしました。
http://docs.fabo.io/swift/


Preview

  

Source

ViewController.swift

//

//  ViewController.swift

//  UIkit018

//


import UIKit


class ViewController: UIViewController, UIScrollViewDelegate{

    

    private var pageControl: UIPageControl!

    private var scrollView: UIScrollView!

    

    override func viewDidLoad() {

        

        // ビューの縦、横のサイズを取得する.

        let width = self.view.frame.maxX, height = self.view.frame.maxY

        

        // 背景の色をCyanに設定する.

        self.view.backgroundColor = UIColor.cyanColor()

        

        // ScrollViewを取得する.

        scrollView = UIScrollView(frame: self.view.frame)

        

        // ページ数を定義する.

        let pageSize = 4

        

        // 縦方向と、横方向のインディケータを非表示にする.

        scrollView.showsHorizontalScrollIndicator = false;

        scrollView.showsVerticalScrollIndicator = false

        

        // ページングを許可する.

        scrollView.pagingEnabled = true

        

        // ScrollViewのデリゲートを設定する.

        scrollView.delegate = self

        

        // スクロールの画面サイズを指定する.

        scrollView.contentSize = CGSizeMake(CGFloat(pageSize) * width, 0)

        

        // ScrollViewViewに追加する.

        self.view.addSubview(scrollView)

        

        // ページ数分ボタンを生成する.

        for var i = 0; i < pageSize; i++ {

            

            // ページごとに異なるラベルを生成する.

            let myLabel:UILabel = UILabel(frame: CGRectMake(CGFloat(i) * width + width/2 - 40, height/2 - 40, 80, 80))

            myLabel.backgroundColor = UIColor.blackColor()

            myLabel.textColor = UIColor.whiteColor()

            myLabel.textAlignment = NSTextAlignment.Center

            myLabel.layer.masksToBounds = true

            myLabel.text = "Page\(i)"

            myLabel.font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize())

            myLabel.layer.cornerRadius = 40.0

            

            scrollView.addSubview(myLabel)

        }

        

        // PageControlを作成する.

        pageControl = UIPageControl(frame: CGRectMake(0, self.view.frame.maxY - 100, width, 50))

        pageControl.backgroundColor = UIColor.orangeColor()

        

        // PageControlするページ数を設定する.

        pageControl.numberOfPages = pageSize

        

        // 現在ページを設定する.

        pageControl.currentPage = 0

        pageControl.userInteractionEnabled = false

        

        self.view.addSubview(pageControl)

    }

    

    

    func scrollViewDidEndDecelerating(scrollView: UIScrollView) {

        

        // スクロール数が1ページ分になったら時.

        if fmod(scrollView.contentOffset.x, scrollView.frame.maxX) == 0 {

            // ページの場所を切り替える.

            pageControl.currentPage = Int(scrollView.contentOffset.x / scrollView.frame.maxX)

        }

    }

    

}


Reference

    UIPageControl Class


Comments