64
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

swift初心者がSmartNews風ニュースアプリを作ってみる過程を晒す(2) - 横スクロールするメニューバーを実装

Last updated at Posted at 2015-11-05

はじめに

前回は、こんな記事を書きました。
swift初心者がSmartNews風ニュースアプリを作ってみる過程を晒す(1) - 事前準備する

作りたいもの

完成イメージはこんな感じです。

20141130150023.png

道のりは遠いですね。。。まずは、ニュースアプリによくある、横スクロールするメニューバーを実装したいと思います。

サンプルはこんな感じです。

20151106_pagemenu.gif

開発環境

iOS9、Xcode7、swift2で開発を行っています。

プロジェクト作成

まずは、Single View Application template を使用して、新規プロジェクトを作成します。

スクリーンショット 2015-11-03 21.08.17.png

各テンプレートのオプションは、以下の通り入力します。

  • Product Name: NewsApp
  • Organization Name: お好きなものを入力してください。
  • Organization Identifier: edu.self
  • Language: Swift
  • Devices: iPhone
  • Use Core Data: チェックしない。
  • Include Unit Tests: チェックしない。
  • Include UI Tests: チェックしない。

プロジェクト作成後、このような画面が表示されます。

スクリーンショット 2015-11-03 21.18.22.png

横スクロールするメニューバーを実装する

PageMenuというライブラリが良さそうなので、こちらを使用して、実装していきます。

ライブラリをインストール

  1. PageMenuからダウンロードしたZipを展開して、CAPSPageMenu.swiftをDrag & Dropしてプロジェクトに追加します。

  2. CAPSPageMenuを使用するためのプロパティをViewController.swiftに追加します。

var pageMenu : CAPSPageMenu?

PageMenuを設置する

次のコードをViewController.swiftのviewDidLoadメソッドに記述します。

        super.viewDidLoad()
        
        // MARK: - UI Setup
        
        self.title = "PAGE MENU"
        self.navigationController?.navigationBar.barTintColor = UIColor(red: 30.0/255.0, green: 30.0/255.0, blue: 30.0/255.0, alpha: 1.0)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: UIBarMetrics.Default)
        self.navigationController?.navigationBar.barStyle = UIBarStyle.Black
        self.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
        self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]
        
        // Do any additional setup after loading the view, typically from a nib.
        
        // Array to keep track of controllers in page menu
        var controllerArray : [UIViewController] = []
        
        // Create variables for all view controllers you want to put in the
        // page menu, initialize them, and add each to the controller array.
        // (Can be any UIViewController subclass)
        // Make sure the title property of all view controllers is set
        // Example:
        var controller1 : UIViewController = UIViewController(nibName: "TableViewController", bundle: nil)
        controller1.title = "SAMPLE TITLE"
        controllerArray.append(controller1)
        
        var controller2 : UIViewController = UIViewController(nibName: "TableViewController", bundle: nil)
        controller2.title = "SAMPLE TITLE"
        controllerArray.append(controller2)

        var controller3 : UIViewController = UIViewController(nibName: "TableViewController", bundle: nil)
        controller3.title = "SAMPLE TITLE"
        controllerArray.append(controller3)

        var controller4 : UIViewController = UIViewController(nibName: "TableViewController", bundle: nil)
        controller4.title = "SAMPLE TITLE"
        controllerArray.append(controller4)

        // Customize page menu to your liking (optional) or use default settings by sending nil for 'options' in the init
        // Example:
        var parameters: [CAPSPageMenuOption] = [
            .ScrollMenuBackgroundColor(UIColor(red: 30.0/255.0, green: 30.0/255.0, blue: 30.0/255.0, alpha: 1.0)),
            .ViewBackgroundColor(UIColor(red: 20.0/255.0, green: 20.0/255.0, blue: 20.0/255.0, alpha: 1.0)),
            .SelectionIndicatorColor(UIColor.orangeColor()),
            .BottomMenuHairlineColor(UIColor(red: 70.0/255.0, green: 70.0/255.0, blue: 80.0/255.0, alpha: 1.0)),
            .MenuItemFont(UIFont(name: "HelveticaNeue", size: 13.0)!),
            .MenuHeight(80.0),
            .MenuItemWidth(90.0),
            .CenterMenuItems(true)
        ]
        
        // Initialize page menu with controller array, frame, and optional parameters
        pageMenu = CAPSPageMenu(viewControllers: controllerArray, frame: CGRectMake(0.0, 0.0, self.view.frame.width, self.view.frame.height), pageMenuOptions: parameters)
        
        
        self.addChildViewController(pageMenu!)
        self.view.addSubview(pageMenu!.view)
        
        pageMenu!.didMoveToParentViewController(self)

最後に、TableViewControllerのクラスファイルと、それに対応するXiBファイルを作成します。

スクリーンショット 2015-11-05 23.51.39.png

動作確認

動きました! 次回はライブラリの中身を読んだり、もう少し外観をブラッシュアップしたいと思います。

20151106_pagemenu.gif

64
59
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
59

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?