iOS RESideMenu 侧滑 第三方类库

下载地址:https://github.com/romaonthego/RESideMenu

效果如下:官方案例

自己的实现效果

具体代码下:

AppDelegate.m文件中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法

DEMOLeftMenuViewController *leftMenuViewController = [[DEMOLeftMenuViewController alloc] init];

    RESideMenu *sideMenuViewController = [[RESideMenu alloc] initWithContentViewController:[[MainTabBarController alloc]init] leftMenuViewController:leftMenuViewController rightMenuViewController:[UINavigationController new]];
    sideMenuViewController.backgroundImage = [UIImage imageNamed:@"005.jpg"];
    sideMenuViewController.menuPreferredStatusBarStyle = 1; // UIStatusBarStyleLightContent
    sideMenuViewController.delegate = self;
//    sideMenuViewController.parallaxContentMaximumRelativeValue=100;
//    sideMenuViewController.bouncesHorizontally=YES;
    sideMenuViewController.contentViewShadowColor = [UIColor blackColor];
    sideMenuViewController.contentViewShadowOffset = CGSizeMake(0, 0);
    sideMenuViewController.contentViewShadowOpacity = 0.6;
    sideMenuViewController.contentViewShadowRadius = 12;
//    sideMenuViewController.contentViewShadowEnabled = YES;
//    sideMenuViewController.panFromEdge=NO;
    self.window.rootViewController = sideMenuViewController;

左侧的控制器DEMOLeftMenuViewController.h和DEMOLeftMenuViewController.m

#import <UIKit/UIKit.h>
#import "RESideMenu.h"

@interface DEMOLeftMenuViewController : UIViewController<UITableViewDataSource, UITableViewDelegate, RESideMenuDelegate>

@end
#import "DEMOLeftMenuViewController.h"
#import "HomeViewController.h"
#import "UIViewController+RESideMenu.h"
#import "LoginViewController.h"
#import "resigeViewController.h"

@interface DEMOLeftMenuViewController ()
@property (strong, readwrite, nonatomic) UITableView *tableView;

@end

@implementation DEMOLeftMenuViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.navigationController.title=@"登陆";
    self.tableView = ({
        UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, (self.view.frame.size.height - 54 * 5) / 2.0f, self.view.frame.size.width, 54 * 5) style:UITableViewStylePlain];
        tableView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth;
        tableView.delegate = self;
        tableView.dataSource = self;
        tableView.opaque = NO;
        tableView.backgroundColor = [UIColor clearColor];
        tableView.backgroundView = nil;
        tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        tableView.bounces = NO;
        tableView.scrollsToTop = NO;
        tableView;
    });
    [self.view addSubview:self.tableView];
}

#pragma mark -
#pragma mark UITableView Delegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    switch (indexPath.row) {
        case 0:
            [self presentViewController:[[UINavigationController alloc] initWithRootViewController:[[LoginViewController alloc] init]] animated:YES completion:nil];
        break;
        case 1:
            [self presentViewController:[[UINavigationController alloc] initWithRootViewController:[[resigeViewController alloc] init]] animated:YES completion:nil];
            break;
        default:
            break;
    }
}

#pragma mark -
#pragma mark UITableView Datasource

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 54;
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)sectionIndex
{
    return 5;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        cell.backgroundColor = [UIColor clearColor];
        cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:21];
        cell.textLabel.textColor = [UIColor whiteColor];
        cell.textLabel.highlightedTextColor = [UIColor lightGrayColor];
        cell.selectedBackgroundView = [[UIView alloc] init];
    }

    NSArray *titles = @[@"Home", @"Calendar", @"Profile", @"Settings", @"Log Out"];
    NSArray *images = @[@"IconHome", @"IconCalendar", @"IconProfile", @"IconSettings", @"IconEmpty"];
    cell.textLabel.text = titles[indexPath.row];
    cell.imageView.image = [UIImage imageNamed:images[indexPath.row]];

    return cell;
}

@end

主页HomeViewController.h和HomeViewController.m实现侧滑的关键代码

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"个人中心"
                                                                             style:UIBarButtonItemStylePlain
                                                                            target:self
                                                                            action:@selector(presentLeftMenuViewControl

这个第三番可以实现很多效果

总结

优点:

1.里面的文件较少,不需要使用cocoapods即可运行。

2.里面自定义API也比较多,可以设置变小的抽屉效果或者不变小。

3.里面有两个事例程序,一个是纯手码,一个是Storyboard得。可见作者也非常喜欢IB开发,此框架用IB开发应该可以完美兼容。

4.可以使用手势拖来拖去。

5.项目里各个文件不需要继承,导入头文件就行。

缺点:

1.左边显示的菜单可选项是固定的几个button,暂时想把左边换成tableView还不知道可不可行。

2.不能实现状态栏右移。

3.暂时没找到两边控制器的占比怎么自定义。

时间: 2024-10-26 11:20:35

iOS RESideMenu 侧滑 第三方类库的相关文章

IOS网络编程——第三方类库

IOS网络编程——第三方类库 目录 概述 ASIHttpRequest AFNetworking 其他 概述 ASIHttpRequest AFNetworking 其他

iOS开发引入第三方类库的问题

在开发iOS程序的过程中,通常在导入第三方的类库(.a/.o)文件会报出一系列的错误: 看似缺少了某个类库文件,但多次检查之后发现,没缺少啥引用的,甚至跟原来的Demo一个都不差,这是怎么回事? 由于第三方类库多数是用C++或者C编写的,在引用过程中,还需要告诉编译器可能会出现的语言种类,以便使用对应的解释器进行解析. OK,那么我们只需要在XCode环境中检查以下几个配置项是否与下面一致即可: TARGETS->Build Settings,搜索 1.Other Linker Flags:-O

iOS 优化内存(七)开发中使用第三方类库

在iOS中使用第三方类库 方法一:直接复制所有源文件到项目中 这种方法就是把第三方类库的所有源文件复制到项目中,直接把所有.h和.m文件拖到XCode项目中即可.如果第三方类库引用了一些系统自带类库,那么在项目中还需要额外引用那些类库. 如果当前的项目启用了ARC,而引用的第三方类库未使用ARC,那还需要在项目信息的Targets – Build Parses里找到第三方类库的.m文件,并为它们加上-fno-objc-arc标记. 而对于在未启用ARC的项目用引用使用了ARC的第三方类库,则需要

【转】iOS开发常用的第三方类库

原文: http://blog.csdn.net/xiazailushang/article/details/9716043 在iOS开发中不可避免的会用到一些第三方类库,它们提供了很多实用的功能,使我们的开发变得更有效率:同时,也可以从它们的源代码中学习到很多有用的东西. Reachability 检测网络连接 用来检查网络连接是否可用:包括WIFI和WWAN(3G/EDGE/CDMA等)两种工作模式. 可以从Apple网站下载到:http://developer.apple.com/libr

iOS第三方类库JSPatch(热更新)

原文地址: 一.前言 场景一:我们在做iOS开发的过程中,难免会由于自己的不细心导致一些小问题.如果产品没上线之前发现还好,如果上线了才发现问题,那么问题就大了,可能直接影响KPI,更严重的甚至直接面临着fire. 场景二.一旦上线的产品,如果临时遇到需求变动,那么久必须重新修改代码.一旦修改了项目代码的话,我们就必须重新发版.这样岂不是很麻烦? 现在就来让我们看一下JSPatch,它的出现可以在不发版的情况下动态的自行修复或者添加新的需求. 二.JSPatch简介 JSPatch:它是一个第三

iOS开发中的第三方类库管理工具-CocoaPods-

转载请注明出处 : http://blog.csdn.net/whjForWork/article/details/44967891 CocoaPods是什么? 当iOS 项目中需要使用第三方开源类库时,或者已使用的类库需要更新时,再去一个个重新下载非常麻烦,但是通过CocoaPods,我们可以一行命令就解决这个问题 CocoaPods是一个负责管理iOS项目中第三方开源代码的工具,Cocoa使用Ruby开发,其源码在Github上开源https://github.com/CocoaPods/C

【iOS开发-13】大神器:如何利用cocoapods使用第三方类库,以针对UISwitch的第三方类库为例

上一篇笔记以及之前部分笔记里面有些属性设置了没效果,比如UISwitch开关控件的开关背景图片:或者直接没有那种我们想要的属性,比如直接用代码设置控件大小. 所以,我们需要用第三方类库,意思大概是我们不用UISwitch类来实例化一个对象了,而是用第三方的类来实例化一个对象,然后这个对象可以进行各种修改随心所欲. 当然,这里的逻辑就是,我们要导入第三方类库,可能需要把它头文件神马的引入进来,然后就可以实例化,但是如何用第三方类库?cocoapods神器. 安装和使用教程如下:点击这里(相当齐全)

使用cocoapods来管理IOS工程中的第三方类库

cocoapods是非常优秀的IOS包管理工具,用来管理第三方组件, 完美解决第三方类库库更新, 相互间依赖等关系. 参考cocoapods主页. 安装 一般换成国内的source会比较方便. sudo gem install cocoapods //会被墙掉. gem sources --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/ gem sources -l sudo gem install coco

IOS第三方类库之ASIHTTPRequest

ASIHTTPRequest ASIHTTPRequest 是一个直接在CFNetwork上做的开源项目,提供了一个比官方更方便更强大的HTTP网络传输的封装.它的特色功能如下:1,下载的数据直接保存到内存或文件系统里2,提供直接提交(HTTP POST)文件的API3,可以直接访问与修改HTTP请求与响应HEADER4,轻松获取上传与下载的进度信息5,异步请求与队列,自动管理上传与下载队列管理机6,认证与授权的支持7,Cookie8,请求与响应的GZIP9,代理请求   下面来两个ASIHTT