BeautyDrawer

BeautyDrawer 是一款简单易用的抽屉效果实现框架,集成的属性能够对view 滑动缩放进行控制。

Main features

  • 三个视图,主视图能够左右滑动。实现抽屉效果
  • 应用框架接口的内置參数属性能够对view的滑动速度。偏移度,和缩放比例进行设置
  • 简单易用

Demonstration

Requirements

  • iOS 6.0+
  • Xcode 6.1.1

Installation

手动导入:

* 将BeautyDrawer/Resource目录中的全部文件拽入项目中

* 导入主头文件<BeautyDrawer/ZHDrawerController.h>

API

Properties

/*
*主视图隐藏后显示比例(0~1) 是对主视图大小缩放的属性: 0.8
*/
@property (nonatomic, assign) CGFloat hideMainViewScale; /**
*主视图点击或拖拉恢复后比例 (0~1) 默认:1
*/
@property (nonatomic, assign) CGFloat backMainViewScale; /*
*主视图拖拽后centerX偏移比例,默认:0.05
*/
@property (nonatomic, assign) CGFloat centerDeviationX; /*
*主视图centerY偏移比例,默认:1
*/
@property (nonatomic, assign) CGFloat centerDeviationY; /*
*滑动速度系数-建议在0.5-1之间。默觉得0.5
*/
@property (assign,nonatomic) CGFloat speed; /*
*是否同意点击视图恢复视图位置。默觉得yes
*/
@property (strong) UITapGestureRecognizer *sideslipTapGes;

Method

不同的构造方法能够实现不同视图的格局

/*
*构造方法(左控制器 & 主控制器 &右控制器 & 背景图片)
*/
- (instancetype)initWithLeftController:(UIViewController *)leftController
andMainController:(UIViewController *)mainController
andRightController:(UIViewController *)rightController
andBackgroundImage:(UIImage *)image; /*
*构造方法(左控制器 & 主控制器 & 又控制器)
*/
- (instancetype)initWithLeftController:(UIViewController *)leftController
andMainController:(UIViewController *)mainController
andRightController:(UIViewController *)rightController; /*
*构造方法(左控制器 & 主控制器)
*/
- (instancetype)initWithLeftController:(UIViewController *)leftController andMainView:(UIViewController *)mainController; /*
*构造方法(右控制器 & 主控制器)
*/
- (instancetype)initWithRightView:(UIViewController *)rightController andMainView:(UIViewController *)mainController;

Usage

appdelegate 设置(required)

在appdelegate.m 文件里对视图初始化

#import "AppDelegate.h"
#import "LeftViewController.h"
#import "MainViewController.h"
#import "RightViewController.h" @interface AppDelegate ()
@end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch. // 1. 创建window
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; // 2. 创建控制器
MainViewController *main = [[MainViewController alloc] init];
LeftViewController *left = [[LeftViewController alloc] init];
RightViewController *right = [[RightViewController alloc] init]; // 3. 创建跟控制器
self.controller = [[ZHDrawerController alloc] initWithLeftController:left andMainController:main andRightController:right];
self.controller.hideMainViewScale = 0.8;
self.controller.backMainViewScale = 1.0;
self.controller.centerDeviationX = 0.2; // 4. 设置跟控制器
self.window.rootViewController = self.controller; // 5. 显示 window
[self.window makeKeyAndVisible]; return YES;
}

对视图加入子view显示

在leftView,rightView, mainView中自己定义view

- (void)viewDidLoad
{
[super viewDidLoad]; //不缩放 hideMainViewScale = 1.0
[self addImage]; //缩放 hideMainViewScale = 0.8
//[self loadAddView];
} - (void)addImage
{
UIImageView *img = [[UIImageView alloc] initWithFrame:self.view.frame]; img.image = [UIImage imageNamed:@"main.jpg"]; [self.view addSubview:img]; }

GitHub

https://github.com/HuanDay/BeautyDrawer.git

致谢wangxiaoit童鞋

玩转iOS开发 - 简易的实现2种抽屉效果的更多相关文章

  1. 玩转iOS开发:iOS中的GCD开发(三)

    上一章, 我们了解到了GCD里的一些队列和任务的知识, 也实践了一下, 同时我们也对主队列的一些小情况了解了一下, 比如上一章讲到的卡线程的问题, 如果没有看的朋友可以去看看玩转iOS开发:iOS中的 ...

  2. iOS开发CoreAnimation解读之三——几种常用Layer的使用解析

    iOS开发CoreAnimation解读之三——几种常用Layer的使用解析 一.CAEmitterLayer 二.CAGradientLayer 三.CAReplicatorLayer 四.CASh ...

  3. 玩转iOS开发 - JSON 和 Xml 数据解析

    前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...

  4. iOS开发之各种动画各种页面切面效果

    因工作原因,有段时间没发表博客了,今天就发表篇博客给大家带来一些干货,切勿错过哦.今天所介绍的主题是关于动画的,在之前的博客中也有用到动画的地方,今天就好好的总结一下iOS开发中常用的动画.说道动画其 ...

  5. 【转】iOS开发之各种动画各种页面切面效果

    原文: http://www.cnblogs.com/ludashi/p/4160208.html?utm_source=tuicool 因工作原因,有段时间没发表博客了,今天就发表篇博客给大家带来一 ...

  6. iOS 开发之模糊效果的五种实现

    前言 在iOS开发中我们经常会用到模糊效果使我们的界面更加美观,而iOS本身也提供了几种达到模糊效果的API,如:Core Image,使用Accelerate.Framework中的vImage A ...

  7. 玩转iOS开发 - 多线程开发

    前言 本文主要介绍iOS多线程开发中使用的主要技术:NSOperation, GCD. NSThread, pthread. 内容依照开发中的优先推荐使用的顺序进行介绍,涉及多线程底层知识比較多的NS ...

  8. 玩转iOS开发 - 数据缓存

    Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...

  9. 玩转iOS开发 - 消息推送

    消息推送

随机推荐

  1. 初探数位dp

    数位dp有着很明显的特点,一般来说是给定区间[l,r]求满足某种条件区间中的数有多少个 朴素解法一般是O(n)的而n往往很大(10^8起步) 这时候我们就要想办法优化,于是就有了数位dp 数位有两个基 ...

  2. SpringContextHolder 静态持有SpringContext的引用(如何取得Spring管理的bean )

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...

  3. Terrocotta - 基于JVM的Java应用集群解决方案

    前言 越来越多的企业关键应用都必须采用集群技术,实现负载均衡(Load Balancing).容错(Fault Tolerance)和灾难恢复(Failover).以达到系统可用性(High Avai ...

  4. LeetCode Maximum Depth of Binary Tree (求树的深度)

    题意:给一棵二叉树,求其深度. 思路:递归比较简洁,先求左子树深度,再求右子树深度,比较其结果,返回:max_one+1. /** * Definition for a binary tree nod ...

  5. Explain 结果解读与实践

    Explain 结果解读与实践 基于 MySQL 5.0.67 ,存储引擎 MyISAM . 注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一章”“第 ...

  6. BNU 51275 道路修建 Large 并查集

    分析(引入Q神题解  %%%Q) 如果使用可持久化并查集,二分答案判定连通性,复杂度是O(mlog3n),不能在时限内出解.考虑到并查集实际上是一棵树,可以尝试在边上维护一些信息,假设t时刻加了一条边 ...

  7. javascript 的 split用法

    var array = "200,400,300".split(","); var nums = [ ]; for (var i=0 ; i< array ...

  8. 自动化测试(四):VBScript脚本语言

    VBS基于对象,只能利用现成的对象,不能封装.继承等,意味着不是真正的面向对象 语言的学习: 1.数据定义,变量定义,表达式 2.程序控制结构 3.函数,方法,类 4.异常处理 VBScript的数据 ...

  9. Poj 1163 The Triangle 之解题报告

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 42232   Accepted: 25527 Description 7 3 ...

  10. 动态代理CGlib实例

    1.委托类: package 动态代理2; //需要对这个类进行增强 public class UserService { public void create() { System.out.prin ...