第六篇、抽屉效果+UITabBarController

依赖于第三方的框架RESideMenu

1.AppDelegate.m中的实现

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

    //在AppDelegate.h中声明属性,初始化tabBarController
    self.tabBar = [[UITabBarController alloc] init];

    ViewController* vc1 = [[ViewController alloc] init];
    vc1.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemBookmarks tag:0];
    UINavigationController* nav1 = [[UINavigationController alloc] initWithRootViewController:vc1];

    ViewController1* vc2 = [[ViewController1 alloc] init];
    vc2.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemContacts tag:1];
    UINavigationController* nav2 = [[UINavigationController alloc] initWithRootViewController:vc2];

    self.tabBar.viewControllers = @[nav1,nav2];

    //初始化leftVC
    LeftController* left = [[LeftController alloc] init];

    //初始化RESideMenu
    RESideMenu* menu = [[RESideMenu alloc] initWithContentViewController:self.tabBar leftMenuViewController:left rightMenuViewController:nil];
    self.window.rootViewController= menu;
    return YES;
}

2.left左侧菜单

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    AppDelegate* GHDelegate = (AppDelegate* )[UIApplication sharedApplication].delegate;
    ViewController1_1* vc = [[ViewController1_1 alloc] init];

    //通过GHDelegate.tabBar.selectedIndex获得当前tabbaritem对应的nav,进行页面跳转
    NSArray *arrControllers = GHDelegate.tabBar.viewControllers;

    if (GHDelegate.tabBar.selectedIndex==0) {
        UINavigationController* nav = (UINavigationController* )[arrControllers objectAtIndex:0];
        //隐藏sideMenuViewController
        [self.sideMenuViewController hideMenuViewController];
        //隐藏底部
        vc.hidesBottomBarWhenPushed = YES;
        [nav pushViewController:vc animated:YES];
    }else{
        UINavigationController* nav = (UINavigationController* )[arrControllers objectAtIndex:1];
        [self.sideMenuViewController hideMenuViewController];
        vc.hidesBottomBarWhenPushed = YES;
        [nav pushViewController:vc animated:YES];
    }

}

3.RESideMenu常见的属性设置

- (void)awakeFromNib
{
    self.parallaxEnabled = NO;  //视图差效果
    self.scaleContentView = YES;  //中心视图缩放功能打开
    self.contentViewScaleValue = 0.95;  //侧滑出现时缩放比
    self.scaleMenuView = NO;        //侧滑出来的视图是否支持缩放
    self.contentViewShadowEnabled = YES; //中心视图阴影效果,打开显得有层次感。
    self.contentViewShadowRadius = 4.5;  //中心视图阴影效果Radius
    self.panGestureEnabled = NO;   //关闭拖动支持手势

//使用storyboard初始化中心视图和左视图。
    self.contentViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];  //tabbar controller 

    self.leftMenuViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"leftMenuViewController"];
}
时间: 2024-10-10 09:41:33

第六篇、抽屉效果+UITabBarController的相关文章

iOS开发——实用技术OC篇&简单抽屉效果的实现

简单抽屉效果的实现 就目前大部分App来说基本上都有关于抽屉效果的实现,比如QQ/微信等.所以,今天我们就来简单的实现一下.当然如果你想你的效果更好或者是封装成一个到哪里都能用的工具类,那就还需要下一些功夫了,我们这里知识简单的介绍怎么去实现,不过一般我们开发都是找别人做好的,也没必要烂肺时间,除非你真的是大牛或者闲的蛋疼. 其实关于抽屉效果就是界面有三个View,其实一个主View其他两个分别是左边和右边的View,我们分别为他们添加手势,实现左右滑动显示对应的View. 一:所以,首先我们需

C#语法糖之第六篇: 泛型委托- Predicate<T>、Func<T>

今天继续分享泛型委托的Predicate<T>,上篇文章讲了Action委托,这个比Action委托功不一样的地方就是委托引用方法是Bool返回值的方法,Action为无返回值.首先我们看一下它的定义吧: 1 public delegate bool Predicate<T>(T obj); 从其定义可以看到,此委托引用一个返回bool 值的方法,在实际开发中,通常使用Predicate<T>委托变量引用一个“判断条件函数”,在判断条件函数内部书写代码表明函数参数所引用

简单的抽屉效果

简单的抽屉效果是由3 个View 组成,顶层默认显示的mainV,左边的leftV以及右边的rightV ,当mainV 监听到滑动时,计算滑动的偏移量,控制显示leftV或者rightV. 废话不多说,上代码. 一:所以,首先我们需要在头文件中定义三个View的属性,来给外界调用,实现设置对应的属性和效果: 1 @property (nonatomic, weak, readonly) UIView *mainV; 2 3 @property (nonatomic, weak, readonl

第六篇:在SOUI中用九宫格拉伸方式显示一个图片资源

SOUI的初学者刚开始可能难以搞清楚在SOUI中显示一个图片资源的流程,这里做一个简单的示范. 首先我们准备好一张图,以下图为例. 第一步,我们首先把这个图片文件复制到demo的uires目录下,新建一个目录jpg,下面只有这一个文件9.jpg 第二步,我们需要在uires.idx中引入该图片资源 <jpg> <file name="girl" path="jpg\9.jpg"/> </jpg> 我们给这个资源命名为"g

剖析Path侧边栏抽屉效果原理(抽屉效果,Path效果)

如今很多App应用,都用到了侧边栏的效果,比如网易新闻(还带有偏移缩小),今日头条(普遍这种),Path(最先应用这种抽屉效果,所以这种效果也叫Path效果),code4App上已经有很多网友写的第三方侧边栏类,大家可以直接拿来用.这里我主要的是介绍一下这种效果的实现原理,涉及了几个知识点,在其他地方也能用到. UINavigationController和UITabBarController是2个主要的视图控制容器,都有属性viewControllers,能够很好地管理多个视图控制器.但有的时

利用DrawerLayout实现简单的抽屉效果

前言,本篇文章是最基础的利用DrawerLayout实现抽屉效果,我也是尽量精简到了最高效的代码,后面我会贴出其他比较复杂的功能. 先看效果图 标题栏中的文字,会根据点击item的不同,而显示不同的样式. 直接上代码. 下面是activity_main的代码 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andr

第六篇、文件处理之文件修改的两种方式

目录 第六篇.文件处理之文件修改的两种方式 说明 方式一 方式二 总结 第六篇.文件处理之文件修改的两种方式 说明 文件的数据是存放在硬盘上的,所以只能覆盖,不能直接修改,平时看到的修改文件都是障眼法的效果,具体的两种实现方式 方式一 将硬盘里的文件全部加载到内存里,内存是可以直接修改的,修改完了后,再由内存覆盖到硬盘里 import os with open('37r.txt') as fr, open('37r_swap.txt', 'w') as fw: data = fr.read()

Egret入门学习日记 --- 第三十六篇(书中 10.7 ~ 10.8 节 内容)

第三十六篇(书中 10.7 ~ 10.8 节 内容) 开始 书中 10.7 节内容. 书中 10.7 节内容结束. 书中重点: 1.导出素材. 2.配置粒子库. 3.播放动画. 开始操作: 1.导出素材. 我设置好了雪花的效果. 接着是导出. 这是导出后的资源文件. 导入Egret的预加载资源组中. 2.配置粒子库. 下载好官方的粒子库. https://github.com/egret-labs/egret-game-library 拷贝粒子库到项目外,记住 项目文件夹外! 配置好 egret

第三方抽屉效果

1.  抽屉效果的基本原理应用了父子视图的层级,视图的位置改变,动画,手势操作等主要知识点.熟练掌握基础知识并灵活运用,即可实现该效果. > 父子视图的层级: 在指定层级上插入子视图 [view insertSubView: atIndex:] > 视图位置的改变: 通过视图的frame,center属性调整 > 动画:可使用UIView或CALayer的动画,这里主要使用了UIView的动画方法 [UIView animateWithDuration:……. ] > 手势操作:主