码迷,mamicode.com
首页 > 其他好文 > 详细

侧滑的实现

时间:2016-05-07 22:09:49      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

最近自己实现了一个侧滑功能的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

 

侧滑的实现

标签:

原文地址:http://www.cnblogs.com/lsios/p/5469225.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!