SimpleViewPager is a UI Component like Android's ViewPager
SimpleViewPager is mainly consist of 4 parts:
- MenuView... represents each page, containing scrollView to display title.
- ContentScrollView... displays each view produced by SomeViewController.
- SimpleViewController... manages MenuView above components.
- Main.storyboard... defines layouts of MenuView and ContentScrollView
- Synchronous menus and content-views while scrolling horizontally
- Uses Storyboard
- Supports rotation
- Easy to customize because of minimum source code (Your contribution will be appriciated)
- Deployment target iOS 7.0
- Prepare each page component
MenuElem
.
- name... represents page title.
- className... UIViewController's subclass which holds a view to be pasted on SimpleViewController's scrollView.
- sbName... Storyboard for class above.
- Insert
MenuElem
to your desired position. (array index 0 will be the leftmost)
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let menus: Array<MenuElem> =
[
MenuElem(name: "menu1", className: "SomeViewController", sbName: "Some"),
MenuElem(name: "menu2", className: "SomeViewController", sbName: "Some"),
MenuElem(name: "menu3", className: "SomeViewController", sbName: "Some"),
MenuElem(name: "menu4", className: "SomeViewController", sbName: "Some"),
MenuElem(name: "menu5", className: "SomeViewController", sbName: "Some"),
MenuElem(name: "menu6", className: "SomeViewController", sbName: "Some"),
]
self.menuView.setup(menus, delegate:self)
self.setupContentScrollView(menus)
}
- You can pass the any parameter to each viewController via
setupContentScrollView(menus: Array<MenuElem>)
.
func setupContentScrollView(menus: Array<MenuElem>) {
// http://app.coolors.co/e0acd5-3993dd-29e7cd-6a3e37-c7f0bd
let colorPalette = [0xE0ACD5, 0x3993DD, 0x29E7CD, 0x6A3E37, 0xC7F0BD]
var cnt = 0
for menu in menus {
let sb: UIStoryboard = UIStoryboard(name: menu.storyBoardName(), bundle: nil)
let vc = sb.instantiateInitialViewController() as UIViewController
vc.title = menu.name()
vc.view.backgroundColor = UIColor(netHex: colorPalette[cnt%colorPalette.count])
self.contentScrollView.addSubview(vc.view)
self.vcs.append(vc)
cnt++
}
}
MIT