An easy solution to page controllers like NetEase News
Default style
New styles!
CHEERS!
WMMenuViewStyleLine
WMMenuViewStyleFlood
And you can easily have this style only by one step;
pageController.menuViewStyle = WMMenuViewStyleLine;
pageController.menuViewStyle = WMMenuViewStyleFlood;
## What's New * If items width didn't fill the screen width,page controller will calculate width and add gap between each item automatically; * Page controller will remember the position, if it's a kind of scrollView controller,(that means: `UITabelViewController` , `UICollectionViewController` ,or a controller you have replaced `controller.view` to `scrollview`,or you have add a scrollview as it's first subview); * Adjust views and frames when device's orientation changed; * Set the property `itemsWidths` to have **different width**!Like `@[@(100),@(80),@(50).....]`; * Waiting for new function...
First Drag files in red frame to your project.
Then,create an controller that extends from WMPageController
.I recommend to use
- (instancetype)initWithViewControllerClasses:(NSArray *)classes
andTheirTitles:(NSArray *)titles;
to init the controller.Here are two important porperties
classes :contains the classes of view controller, you can put obj in like [UITableViewController class];
titles :Each View controller's title to show in the menu view at the top of the view;
To have a custom page controller,please set the properties in WMPageController
,They are: titleSize
, titleColor
, menuHeight
, pageAnimatable
, menuBGColor
, menuItemWidth
,rememberLocation
,and also itemsWidths
.
pod 'WMPageController'
You can put every controller in WMPageController
,But if you want have a UICollectionViewController
in, please have an attention to UICollectionViewController's
init method.
You should override the - init
to give UICollectionViewController
a UICollectionViewLayout
.
Here is an example:
- (instancetype)init{
UICollectionViewFlowLayout *flow = [[UICollectionViewFlowLayout alloc] init];
flow.minimumLineSpacing = 1;
flow.minimumInteritemSpacing = .1;
CGFloat width = [[UIScreen mainScreen] bounds].size.width / 4 - 3*0.1;
flow.itemSize = CGSizeMake(width,width);
self = [self initWithCollectionViewLayout:flow];
if (self) {
// insert code here...
}
return self;
}
Add a cache policy to make views scroll much more fluently!
And also new styles!
**Reusable view version see this:** https://github.com/wangmchn/YKPageView
**And:** * If you have problems, please issue me. * If you have suggestions, please issue me. * If you like me, please issue me, or you can give me a little star :) * If you want a new style, please issue me! (I'm waiting for it..)