facebook twitter hatena line email

「Ios/swift/外部ライブラリ/PagingMenuController」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==PagingMenuControllerとは== smartnewsのようなPageView付きタブを追加してくれるライブラリ 注意:素早く複数回PageView切り替えのスワ...」)
 
行3: 行3:
  
 
注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない)致命的な欠点がある
 
注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない)致命的な欠点がある
 +
 +
==サンプル==
 +
ViewControllerを複数読み込んでます。予めStroyboadのViewControllerのStoryboard_Idに"FirstViewControllerId"を設定してます。
 +
 +
import UIKit
 +
import PagingMenuController
 +
class PagenewViewController: UIViewController {
 +
    private var genre_ids: [Int] = [0, 999, 1, 2, 4, 5, 6, 99]
 +
    private var genre_names: [String] = ["全体", "ランキング", "News", "芸能", "スポーツ", "アニメ", "ゲーム", "その他"]
 +
    override func viewDidAppear(animated: Bool) {
 +
        super.viewDidAppear(animated)
 +
        struct MenuItem: MenuItemViewCustomizable {
 +
            var displayMode: MenuItemDisplayMode {
 +
                let title = MenuItemText(text: name)
 +
                return .Text(title: title)
 +
            }
 +
            var name = "";
 +
        }
 +
        struct MenuOptions: MenuViewCustomizable {
 +
            var itemsOptions: [MenuItemViewCustomizable] {
 +
                var menuItems: Array<MenuItemViewCustomizable> = []
 +
                for genre_name in genre_names {
 +
                    let item:MenuItemViewCustomizable = MenuItem(name: genre_name)
 +
                    menuItems.append(item)
 +
                }
 +
                return menuItems
 +
            }
 +
            var menuDisplayMode: MenuDisplayMode {
 +
                return .SegmentedControl
 +
                // return .Standard(widthMode: .Flexible, centerItem: true, scrollingMode: .PagingEnabled)
 +
            }
 +
            var genre_names: [String] = []
 +
        }
 +
        struct PagingMenuOptions: PagingMenuControllerCustomizable {
 +
            var componentType: ComponentType {
 +
                let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
 +
                var viewControllers: Array<ViewController> = []
 +
                var key = 0
 +
                for genre_name: String in genre_names {
 +
                    let viewController1 = storyboard.instantiateViewControllerWithIdentifier("FirstViewControllerId") as! ViewController
 +
                    // viewController1.setGenreId(genre_ids[key])
 +
                    // viewController1.setGenreName(genre_name)
 +
                    viewController1.title = genre_name
 +
                    viewControllers.append(viewController1)
 +
                    key += 1
 +
                }
 +
                return .All(menuOptions: MenuOptions(genre_names:self.genre_names), pagingControllers: viewControllers)
 +
            }
 +
            var lazyLoadingPage: LazyLoadingPage {
 +
                return .Three
 +
            }
 +
            var genre_ids: [Int] = []
 +
            var genre_names: [String] = []
 +
        }
 +
        let options = PagingMenuOptions(genre_ids:self.genre_ids, genre_names:self.genre_names)
 +
        let pagingMenuController = PagingMenuController(options: options)
 +
        addChildViewController(pagingMenuController)
 +
        view.addSubview(pagingMenuController.view)
 +
        pagingMenuController.didMoveToParentViewController(self)
 +
    }
 +
    override func didReceiveMemoryWarning() {
 +
        super.didReceiveMemoryWarning()
 +
    }
 +
}

2016年7月24日 (日) 14:23時点における版

PagingMenuControllerとは

smartnewsのようなPageView付きタブを追加してくれるライブラリ

注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない)致命的な欠点がある

サンプル

ViewControllerを複数読み込んでます。予めStroyboadのViewControllerのStoryboard_Idに"FirstViewControllerId"を設定してます。

import UIKit
import PagingMenuController
class PagenewViewController: UIViewController {
   private var genre_ids: [Int] = [0, 999, 1, 2, 4, 5, 6, 99]
   private var genre_names: [String] = ["全体", "ランキング", "News", "芸能", "スポーツ", "アニメ", "ゲーム", "その他"]
   override func viewDidAppear(animated: Bool) {
       super.viewDidAppear(animated)
       struct MenuItem: MenuItemViewCustomizable {
           var displayMode: MenuItemDisplayMode {
               let title = MenuItemText(text: name)
               return .Text(title: title)
           }
           var name = "";
       }
       struct MenuOptions: MenuViewCustomizable {
           var itemsOptions: [MenuItemViewCustomizable] {
               var menuItems: Array<MenuItemViewCustomizable> = []
               for genre_name in genre_names {
                   let item:MenuItemViewCustomizable = MenuItem(name: genre_name)
                   menuItems.append(item)
               }
               return menuItems
           }
           var menuDisplayMode: MenuDisplayMode {
               return .SegmentedControl
               // return .Standard(widthMode: .Flexible, centerItem: true, scrollingMode: .PagingEnabled)
           }
           var genre_names: [String] = []
       }
       struct PagingMenuOptions: PagingMenuControllerCustomizable {
           var componentType: ComponentType {
               let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
               var viewControllers: Array<ViewController> = []
               var key = 0
               for genre_name: String in genre_names {
                   let viewController1 = storyboard.instantiateViewControllerWithIdentifier("FirstViewControllerId") as! ViewController
                   // viewController1.setGenreId(genre_ids[key])
                   // viewController1.setGenreName(genre_name)
                   viewController1.title = genre_name
                   viewControllers.append(viewController1)
                   key += 1
               }
               return .All(menuOptions: MenuOptions(genre_names:self.genre_names), pagingControllers: viewControllers)
           }
           var lazyLoadingPage: LazyLoadingPage {
               return .Three
           }
           var genre_ids: [Int] = []
           var genre_names: [String] = []
       }
       let options = PagingMenuOptions(genre_ids:self.genre_ids, genre_names:self.genre_names)
       let pagingMenuController = PagingMenuController(options: options)
       addChildViewController(pagingMenuController)
       view.addSubview(pagingMenuController.view)
       pagingMenuController.didMoveToParentViewController(self)
   }
   override func didReceiveMemoryWarning() {
       super.didReceiveMemoryWarning()
   }
}