# HWPopController

`HWPopController` can popup `UIViewController` with `multiple animations`, custom pop size in portrait / landscape screen. Popup position can be `top/center/bottom`. And you can define your own popup animations. **My another project for pop view from bottom:**[**HWPanModal**](https://github.com/HeathWang/HWPanModal) ## Screen Shot
## Features * Support popup UIViewController. * Support popup UINavigationController, dynamic change pop size when you push/pop. * Support 12 kinds of pop & dismiss animations. * Support define your own custom animation for pop & dismiss. * Support popup at top/center/bottom, and use `positionOffset` to adjust x,y coordinates. ## Compatibility **iOS 8.0+**, support Objective-C & Swift. ## Installation HWPopController is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile: ```ruby pod 'HWPopController', '~> 1.0.5' ``` ## How to use 1. Create you popup UIViewController. 1. import HWPopController framework 2. config `contentSizeInPop` and `contentSizeInPopWhenLandscape`(if you want to support landscape) ```Objective-C #import "HWPop1ViewController.h" #import @interface HWPop1ViewController () @end @implementation HWPop1ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.contentSizeInPop = CGSizeMake(250, 300); self.contentSizeInPopWhenLandscape = CGSizeMake(300, 200); // build you pop view. } ``` 1. Popup your viewController If you want high custom your popup, init HWPopController. Then config the properties what you want. Please see `HWPopController.h` ```Objective-C { HWPop1ViewController *pop1ViewController = [HWPop1ViewController new]; HWPopController *popController = [[HWPopController alloc] initWithRootViewController:pop1ViewController]; // popView position popController.popPosition = HWPopPositionTop; [popController presentInViewController:self]; } ``` Quick popup, use the UIViewController category. ```Objective-C HWPop1ViewController *pop1ViewController = [HWPop1ViewController new]; [pop1ViewController popupWithPopType:HWPopTypeGrowIn dismissType:HWDismissTypeGrowOut dismissOnBackgroundTouch:YES]; ``` 1. Dismiss pop Use native api. ```Objective-C [self dismissViewControllerAnimated:YES completion:^{ }]; ``` Get popController, then call popController dismiss api. ```Objective-C [self.popController dismiss]; ``` ### Pop UINavigationController If you want pop UINavigationController, and every stacked UIViewController contentSize is not same. You can use `HWPopNavigationController`. `HWPopNavigationController` subclass `UINavigationController`, you can inherit from `HWPopNavigationController`, config contentSizeInPop as default contentSize. When you push A Controller, then Push B Controller. A, B Controller should config contentSizeInPop if you need. If you have not config it, we will use NavigationController contentSizeInPop. Relationship: * UINavigationController * HWPopNavigationController * Your custom UINavigationController inherit from HWPopNavigationController **More details, pls see the Example.** ## Example To run the example project, clone the repo, and run `pod install` from the Example directory first. ## Author HeathWang, yishu.jay@gmail.com ## License **HWPopController** is available under the MIT license. See the LICENSE file for more info.