侧滑的实现

最近自己实现了一个侧滑功能的demo,拿出来给大家分享一下。

这个侧滑的实现原理是一个主控制器,还有一个副控制器。当需要显示侧滑效果的时候,主控制器的view缩小并滑动到侧边,父控制器的view添加到window上,这样就实现了一个侧滑的效果。

1、创建一个类,继承UINavigationController,并重写构造方法

-(instancetype)initWithRootViewController:(UIViewController *)rootViewController;

在构造方法中对需要初始化的实例进行初始化。

2、提供两个方法

-(void)openView  开启侧滑

-(void)closeView 关闭侧滑

主要的代码

-(void)openView
{
    [self.view.window insertSubview:_leftMenu.view atIndex:0];
    [UIView animateWithDuration:0.5 animations:^{
        CGAffineTransform newTransform =  CGAffineTransformScale(self.view.transform, SCALE, SCALE);
        [self.view setTransform:newTransform];
        CGRect rect = self.view.frame;

        self.view.center = CGPointMake(self.view.frame.origin.x + self.view.frame.size.width / 2, self.view.frame.origin.y + self.view.frame.size.height / 2);
        rect.origin.x = SCREEN_MAX_WEITH - 100;
        rect.origin.y = 64;
        self.view.frame = rect;
    }];
    [self.view.window addSubview:_rightView];
}

-(void)closeView
{
    [UIView animateWithDuration:0.5 animations:^{
        CGAffineTransform newTransform =  CGAffineTransformScale(self.view.transform, 100.0f / (SCALE * 100), 100.0f / (SCALE * 100));
        [self.view setTransform:newTransform];
        CGRect rect = self.view.frame;
        self.view.center = CGPointMake(self.view.frame.origin.x + self.view.frame.size.width / 2, self.view.frame.origin.y + self.view.frame.size.height / 2);
        rect.origin.x = 0;
        rect.origin.y = 0;
        self.view.frame = rect;
    } completion:^(BOOL finished) {
        [_rightView removeFromSuperview];
    }];
}

3、提供一个方法,用于跳转页面

-(void)pushController:(UIViewController *)viewController;

以上便是demo侧滑实现的主要逻辑了。

效果如下图

demo下载地址https://github.com/LuShui/leftMenu

时间: 2024-11-09 07:21:01

侧滑的实现的相关文章

自定义控件学习——防qq侧滑栏

效果 主要步骤: 1. 在xml布局里摆放内容. include    2. 在自定义ViewGroup里, 进行measure测量, layout布局    3. 响应用户的触摸事件    4. int scrollX = (int) (downX - moveX);    5. getScrollX()获取当前滚动到的位置    6. 平滑动画 先看布局 layout_left <?xml version="1.0" encoding="utf-8"?&g

5.触摸事件、侧滑菜单

触摸事件 侧滑菜单--- github-SlidingMenu 1.在ViewGroup中,让自己内容移动有以下三个方法个方法: layout(l,t,r,b); offsetTopAndBottom(offset)和offsetLeftAndRight(offset); scrollTo和scrollBy方法; 注意:滚动的并不是viewgroup内容本身,而是它的矩形边框 它是瞬间移动的 2.在自定义ViewGroup中一般不需要去实现onMeasure, 我们去实现系统已有的ViewGro

【FastDev4Android框架开发】神器ViewGragHelper完全解析之详解实现QQ5.X侧滑酷炫效果(三十四)

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50043159 本文出自:[江清清的博客] (一).前言: 这几天正在更新录制实战项目,整体框架是采用仿照QQ5.X侧滑效果的.那么我们一般的做法就是自定义ViewGroup或者采用开源项目MenuDrawer或者Google提供的控件DrawerLayout等方式来实现.这些的控件的很多效果基本上都是采用实现onInterceptTouchEvent和onTouch

【案例分享】仿QQ5.0侧滑菜单ResideMenu

本文由孙国威 原创.如需转载,请注明出处! 为了后续对这个项目进行优化,比如透明度动画.背景图的位移动画,以及性能上的优化. 我把这个项目上传到github上面,请大家随时关注. github地址https://github.com/sunguowei 最近项目要做一个QQ5.0的侧滑菜单效果,和传统的侧滑菜单存在着一些差异.想必大家都已经见识过了. 为了不重复发明轮子,先去github上面搜索了一番. 发现了几个类似的,但是还是有一些不同. 下面是搜索到的类似的开源项目. RESideMenu

android官方侧滑菜单DrawerLayout详解

drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawerLayout分为侧边菜单和主内容区两部分,侧边菜单可以根据手势展开与隐藏(drawerLayout自身特性),主内容区的内容可以随着菜单的点击而变化(这需要使用者自己实现). drawerLayout的使用很方便,使用drawerLayout的要点如下: 1.drawerLayout其实是

页面侧滑栏效果

效果图:使用侧滑栏属性将两个页面组合起来,显示侧滑效果 首先:设置左边页面的布局: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_widt

android 应用架构随笔五(ActionBar与侧滑菜单DrawerLayout)

ActionBar(V7)的添加非常简单,只需要在AndroidManifest.xml中指定Application或Activity的theme是Theme.Holo或其子类就可以了,在Android 3.0及更高的版本中,Activity中都默认包含有ActionBar组件. drawerLayout(V4)是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产物.drawer

自定义控件进阶02_侧滑删除,粘性控件

1 快速索引 细节问题: 1.1 把当前被选中的字母索引置为灰色,否则为白色 每一次在快速索引栏上的触摸事件都触发invalidate(),重走onDraw()方法 在onDraw()方法里,做判断,如果通过触摸事件计算的索引与绘制字母数组的索引一致时就更改画笔的颜色,(记得在触摸事件中如果手指抬起,就把计算的索引置为-1) 1.2 弹出吐司不太好看,弹出一个圆角的矩形框会好看一些(实际上就是一个圆角的TextView,平常隐藏,滑动的时候显示) 圆角:定义背景的xml文件,shape根节点,弧

侧滑栏效果的实现

效果 源码 https://github.com/YouXianMing/iOS-Project-Examples 中的 SideViewController // // ViewController.m // SideViewController // // Created by YouXianMing on 16/6/6. // Copyright © 2016年 YouXianMing. All rights reserved. // #import "ViewController.h&q

iOS RESideMenu 侧滑 第三方类库

下载地址:https://github.com/romaonthego/RESideMenu 效果如下:官方案例 自己的实现效果 具体代码下: AppDelegate.m文件中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法 DEMOLeftMenuViewController *leftMenuViewController