iOS实现侧滑栏效果


效果

 

源码: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"
#import "LeftViewController.h"
#import "MainViewController.h"
#import "UIView+SetRect.h"

@interface ViewController () {
 
 CGFloat _screenWidth;
}

@property (nonatomic, strong) UIPanGestureRecognizer *panGesture;
@property (nonatomic)   CGPoint     panBeginPoint;

@property (nonatomic, strong) LeftViewController  *leftViewController;
@property (nonatomic, strong) UIView     *leftView;

@property (nonatomic, strong) MainViewController  *mainViewController;
@property (nonatomic, strong) UIView     *mainView;

@end

@implementation ViewController

- (void)viewDidLoad {
 
 [super viewDidLoad];
 
 // Init some value.
 _screenWidth = Width;
 
 // Add backgroundView.
 UIImageView *backgroundView = [[UIImageView alloc] initWithFrame:self.view.bounds];
 backgroundView.image  = [UIImage imageNamed:@"back"];
 [self.view addSubview:backgroundView];
 
 // LeftViewController
 self.leftViewController = [[LeftViewController alloc] init];
 self.leftView   = self.leftViewController.view;
 [self.view addSubview:self.leftView];
 
 // MainViewController
 self.mainViewController = [[MainViewController alloc] init];
 self.mainView   = self.mainViewController.view;
 [self.view addSubview:self.mainView];
 
 // Pan gesture.
 self.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureEvent:)];
 [self.mainView addGestureRecognizer:self.panGesture];
}

- (void)panGestureEvent:(UIPanGestureRecognizer *)gesture {
 
 CGPoint translation = [gesture translationInView:gesture.view];
 CGPoint velocity = [gesture velocityInView:gesture.view];
 
 CGFloat gap    = _screenWidth / 3.f * 2;
 CGFloat sensitivePosition = _screenWidth / 2.f;
 
 if (velocity.x < 0 && _mainView.x <= 0) {
  
  // 过滤掉向左侧滑过头的情形
  _mainView.x = 0.f;
  
 } else {
  
  if (gesture.state == UIGestureRecognizerStateBegan) {
   
   // 开始
   _panBeginPoint = translation;
   
   if (_mainView.x >= sensitivePosition) {
    
    _panBeginPoint.x -= gap;
   }
   
  } else if (gesture.state == UIGestureRecognizerStateChanged) {
   
   // 值变化
   _mainView.x = translation.x - _panBeginPoint.x;
   
   if (_mainView.x <= 0) {
    
    // 过滤掉向左侧滑过头的情形
    _mainView.x = 0.f;
   }
   
  } else if (gesture.state == UIGestureRecognizerStateEnded) {
   
   // 结束
   [UIView animateWithDuration:0.20f animations:^{
    
    _mainView.x >= sensitivePosition ? (_mainView.x = gap) : (_mainView.x = 0);
   }];
  }
 }
}

@end

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。



相关阅读:
微软2015年7月安全更新公告:Win10幸免 Win7/Win8.1受影响
12行javascript代码绘制一个八卦图
oracle用户权限、角色管理详解
Linux中的proc目录详细介绍
css+filter实现简单的图片透明效果
实例详解Android解决按钮重复点击问题
Java+Nginx实现POP、IMAP、SMTP邮箱代理服务
Win7使用还原功能找回丢失系统文件的方法
Js实现无刷新删除内容
Win10 TH2正式版秋季更新内容曝光 共有十八处改进
ECMAScript6块级作用域及新变量声明(let)
Win10准正式版10240出现UAC窗口提示问题
最简单的Oracle数据恢复 select as of使用方法
苹果Mac查看硬盘是否开启ACHI模式的方法图解
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 5.20表白短信 我们的官柳小学 我明天去远方 小学二年级作文750字:珍惜生命、安全出行 钓龙虾700字 可爱的花背小松鼠 医院社会实践报告范文 那一次,也有你 镇初中校本教研情况汇报 侯以雷诗歌欣赏852 咏昭君 阳光的少年 找妈妈作文500字 在学校教育教学实践中抓好党建工作——赴云、贵两省教育考察报告 旅游形象大使选拔大赛选拔活动实施方案 我的艺术生活 千纸鹤工程 平安出行,伴我一生作文800字 失恋不一定是坏事,可能是下一个幸福的开始。哲理经典语录(爱情语录) 热能与动力工程专业自荐信9 教师实习报告 爸爸让我认真 达芬奇蛋的翅膀 运动会贺词作文300字 英雄如山观后感 我的玩具作文 跟女朋友说甜蜜的话 你能理解我的痴心吗 中华人民共和国50年经济发展与制度变革述评 感恩母亲节作文700字 2012—2013学年度下学期高一语文备课组教学教研工作总结 跑步圈里的三大人气女星 学生会学习部第一学期工作计划 100年后的地球作文400字 学生入党申请书专用模版推荐 “坏姐姐”____我 松兰山游玩 公主历险记(2) 成就 五月份安全工作总结(21) 美好的事 假如爱有天意台词经典台词 小学五年级作文400字:绿 党校学习小组讨论总结 2013行政工作总结及计划 习惯就是一切甚至爱情中也是如此//浪漫爱情名言警句 党啊我永远热爱您作文1000字 梦比欣 侯以雷诗歌欣赏575 围城钱钟书读后感 随笔700字:盛夏光年

Copyright © 2016 phpStudy |