「Ios/swift/外部ライブラリ/PagingMenuController」の版間の差分
ナビゲーションに移動
検索に移動
ページの作成:「==PagingMenuControllerとは== smartnewsのようなPageView付きタブを追加してくれるライブラリ 注意:素早く複数回PageView切り替えのスワ...」 |
編集の要約なし |
||
| (同じ利用者による、間の10版が非表示) | |||
| 2行目: | 2行目: | ||
smartnewsのようなPageView付きタブを追加してくれるライブラリ | smartnewsのようなPageView付きタブを追加してくれるライブラリ | ||
注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない) | 注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない)致命的な欠点がある。私の確認だと2番目のtabのViewControllerの幅が一部小さくなることもあった。 | ||
github:https://github.com/kitasuke/PagingMenuController | |||
==インストール== | |||
$ vi podfile | |||
source 'https://github.com/CocoaPods/Specs.git' | |||
platform :ios, '9.0' | |||
target 'Sample1' do | |||
use_frameworks! | |||
pod 'PagingMenuController' | |||
end | |||
$ pod install | |||
==サンプル== | |||
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月28日 (木) 12:45時点における最新版
PagingMenuControllerとは
smartnewsのようなPageView付きタブを追加してくれるライブラリ
注意:素早く複数回PageView切り替えのスワイプをすると反応しない(一回目のアニメーションが終わるまで反応しない)致命的な欠点がある。私の確認だと2番目のtabのViewControllerの幅が一部小さくなることもあった。
github:https://github.com/kitasuke/PagingMenuController
インストール
$ vi podfile source 'https://github.com/CocoaPods/Specs.git' platform :ios, '9.0' target 'Sample1' do use_frameworks! pod 'PagingMenuController' end $ pod install
サンプル
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()
}
}