本文主要是介绍QQ侧边栏效果(UIViewController添加子视图控制器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
效果图:(菜单,出现菜单栏-_-就放了个button,再次点击菜单回来,点击橘色的button推送到一个新的界面)
思路:给UIViewController添加标签控制器,标签控制器上装两个导航控制器,点击导航控制器上左边的UIabrButtonItem改变标签控制器视图的坐标(大小),再次点击还原
(附加:点击橘色按钮,push一个页面,页面充满整个屏幕)
给UIView添加子视图控制器:
@interface ViewController () {UINavigationController *homenav; //导航控制器UINavigationController *messagenav; //导航控制器UITabBarController *redViewController;//标签控制器CGPoint _point; //屏幕中心点坐标
}
- (void)viewDidLoad {[super viewDidLoad];[self menuView];_point = self.view.center;redViewController = [[UITabBarController alloc]init];redViewController.view.backgroundColor = [UIColor redColor];//更改所有导航控制器颜色[UINavigationBar appearance].barTintColor = [UIColor greenColor];homenav = [[UINavigationController alloc]initWithRootViewController:[[HomeViewController alloc]init]];messagenav = [[UINavigationController alloc]initWithRootViewController:[[MessageViewController alloc]init]];homenav.navigationBar.translucent = NO;redViewController.view.layer.shadowOffset = CGSizeMake(-10, 0);redViewController.view.layer.shadowColor = [UIColor blackColor].CGColor;//默认不显示阴影,要改不透明度redViewController.view.layer.shadowOpacity = 0.6;redViewController.viewControllers = @[homenav,messagenav];//添加子视图控制器[self addChildViewController:redViewController];//视图添加到自己的视图上面[self.view addSubview:redViewController.view];}
#pragma mark - 菜单
- (void)menuView {UIView *meanuView = [[UIView alloc]initWithFrame:self.view.bounds];meanuView.backgroundColor = [UIColor yellowColor];[self.view addSubview:meanuView];UIButton *button = [[UIButton alloc]init];button.frame = CGRectMake(0,100, 100, 30);button.backgroundColor = [UIColor orangeColor];[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];[meanuView addSubview:button];}- (void)buttonPressed:(UIButton *)sender {sharedInfoCenter.showLeftMenuView = NO;[UIView animateWithDuration:0.2 animations:^{redViewController.view.center = _point;redViewController.view.transform = CGAffineTransformIdentity;}];NSLog(@"%@",redViewController.selectedViewController);UIViewController *detailViewController = [[UIViewController alloc]init];detailViewController.title = redViewController.selectedViewController.title;detailViewController.view.backgroundColor = [UIColor whiteColor];if ([redViewController.selectedViewController isKindOfClass:[UINavigationController class]]) {[((UINavigationController *)redViewController.selectedViewController) pushViewController:detailViewController animated:YES];}}
baseViewController:
- (void)viewDidLoad {[super viewDidLoad];//自定义视图// UIBarButtonItem *leftItem = [UIBarButtonItem alloc]initWithCustomView:<#(UIView *)#>_point = self.view.center;UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithTitle:@"菜单" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonItem:)];self.navigationItem.leftBarButtonItem = leftItem;
}- (void)barButtonItem:(UIBarButtonItem *)sender {//单例持有sharedInfoCenter.showLeftMenuView = !sharedInfoCenter.showLeftMenuView;if (sharedInfoCenter.showLeftMenuView) {[UIView animateWithDuration:0.2 animations:^{self.tabBarController.view.transform = CGAffineTransformMakeScale(0.8, 0.8);self.tabBarController.view.center = CGPointMake(_point.x + 140,_point.y);}];}else {[UIView animateWithDuration:0.2 animations:^{self.tabBarController.view.transform = CGAffineTransformIdentity;self.tabBarController.view.center = _point;}];}}
这篇关于QQ侧边栏效果(UIViewController添加子视图控制器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!