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 交通频道 作文范文 倾情,为你谱写爱的箴言 暑期爱心支教社会实践活动开学典礼 知青文化研讨会发言稿 受伤的鸽子作文400字 中国工业深化的原因 拍照作文250字 永远也唤不回的青春 形势与政策论文范文 向舟曲遇难同胞默哀 那个卖猪肉的北大毕业生已经50岁了,他现在在干嘛? 2016年父亲节短信祝福语 2016农村大学生村官心得体会 蜘蛛的命运作文500字 教师师德师风自查报告 销售鼓舞人心的话 等你,在如花的年华 军训小结800字 春节新年贺词 十佳美德少年事迹材料 7月1日建党节寄语大全 摘杨梅 差点背叛 初中初三作文800字:观影片小鞋子有感 你真的爱过我吗? 求职信范文内容 我得了一面小红旗作文250字 描写坚持的句子 坚持就是胜利,这是永久不变的真理 创建省级文明单位工作计划 流水 家乡特产――龙眼350字 一件有趣的事300字日记 扫清“为官不为”打通“最后一公里” 女性成才与女性参政 扩写《囫囵吞枣》作文600字 我家的“唐僧” 三年级500字作文:小女孩是不是开错了窗 也谈中国距离发达国家还有多远——读我们距离发达作文900字 小女巫的恋爱手记作文700字 四年级军训活动作文 “心存感恩 服务大众”志愿者活动策划书 《妈妈您辛苦了》 小学六年级作文1200字:心之伤 第一次爱的人 小学六年级作文600字:天下第一漂 合欢花开 校园里的童话王国 母亲节 快乐 对不起母亲作文400字 人事助理实习总结 苗朕鹏、我爱你 世界各地如何过妇女节 an interesting thing

Copyright © 2016 phpStudy |