addChildViewController 的使用
2017-09-15 00:00
218 查看
ChildViewSampleViewController.h
ChildViewSampleViewController.m
ps:
http://www.jianshu.com/p/91e0d6554254
http://www.jianshu.com/p/032e4bbcf822
@interface ChildViewSampleViewController : UIViewController @end
ChildViewSampleViewController.m
@interface ChildViewSampleViewController () @property (nonatomic) UIViewController *root; @property (nonatomic) UIViewController *overlap; @property (nonatomic) UIButton *button; @end @implementation ChildViewSampleViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. self.root = [[UIViewController alloc] init]; self.root.view.frame = CGRectMake(0, 60, 320, self.view.frame.size.height - 60); [self.root.view setBackgroundColor:[UIColor yellowColor]]; [self addChildViewController:self.root]; [self.root didMoveToParentViewController:self]; [self.view addSubview:self.root.view]; self.button = [[UIButton alloc] initWithFrame:CGRectMake(10, 10, 150, 50)]; [self.button setTitle:@"Show" forState:UIControlStateNormal]; [self.button addTarget:self action:@selector(pop:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:self.button]; } #pragma mark - Event -(void)pop:(id)sender { if (self.overlap == nil ) { // Open(Show) self.overlap = [[UIViewController alloc] init]; [self.overlap.view setBackgroundColor:[UIColor redColor]]; [self addChildViewController:self.overlap]; // Start line CGRect startFrame = self.view.frame; startFrame.origin.y = startFrame.size.height; self.overlap.view.frame = startFrame; // Move half [self transitionFromViewController:self.root toViewController:self.overlap duration:1.0 options:0 animations:^{ CGRect original = self.root.view.frame; self.overlap.view.frame = CGRectMake(0, original.origin.y, original.size.width, original.size.height); } completion:^(BOOL finished) { [self.overlap didMoveToParentViewController:self]; [self.button setTitle:@"Hide" forState:UIControlStateNormal]; }]; } else { // Hide [self.overlap willMoveToParentViewController:nil]; // Good-bye [self transitionFromViewController:self.overlap toViewController:self.root duration:1.0 options:0 animations:^{ CGRect original = self.root.view.frame; self.overlap.view.frame = CGRectMake(0, original.size.height, original.size.width, original.size.height); [self.overlap.view.superview bringSubviewToFront:self.overlap.view]; } completion:^(BOOL finished) { [self.overlap removeFromParentViewController]; self.overlap = nil; [self.button setTitle:@"Show" forState:UIControlStateNormal]; }]; } } @end
ps:
http://www.jianshu.com/p/91e0d6554254
http://www.jianshu.com/p/032e4bbcf822
相关文章推荐
- addChildViewController的使用
- iOS addChildViewController 使用
- IOS addChildViewController方法使用及注意事项
- 使用addChildViewController时出现的问题
- 浅谈UIViewController 使用-addChildViewController自定义视图控制器
- IOS addChildViewController方法使用及注意事项
- iOS开发之使用addChildViewController:给控制器添加子控制器
- 使用addChildViewController 遇到没有加载的controller viewdidload也被调用
- addChildViewController后开启热点/wifi/打电话引起的子vc的布局问题
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
- addChildViewController 与presentViewController、pushViewController跳转区别
- iOS开发 剖析网易新闻标签栏视图切换(addChildViewController属性介绍)
- addChildViewController
- addChildViewController与viewWillAppear、viewDidAppear关系说明
- addChildViewController方法
- pushViewController/presentModalViewController/addSubView区别及使用方法
- addchildviewcontroller
- Add child view controller to UINavigationController
- addChildViewController、removeFromParentViewController等语法
- ios 开发日记 13-剖析网易新闻标签栏视图切换(addChildViewController属性介绍)