hibou 主界面自定义侧滑

给要侧滑的View添加UIPanGestureRecognizer

#pragma mark 手势识别器回调方法

- (void)dragView:(UIPanGestureRecognizer *)gesture{

switch (gesture.state) {

case
UIGestureRecognizerStateBegan:

[self
startDrag];

break;

case
UIGestureRecognizerStateEnded:

[self
endDrag];

break;

default:

[self
Draging:gesture];

break;

}

}

#pragma mark 开始拖动,记录下开始的x值

- (void)startDrag{

CGRect frame = _mainView.frame;

_lastDownX = frame.origin.x;

}

#pragma mark 正在拖动,让View跟着动

- (void)Draging:(UIPanGestureRecognizer *)gesture{

CGFloat maxX = [UIScreen
mainScreen].bounds.size.width *
kSlideRatio;

CGPoint transform = [gesture
translationInView:_mainView];

CGRect frame = _mainView.frame;

frame.origin.x =
_lastDownX + transform.x;

if (frame.origin.x <
0) {   //不可以移动到屏幕左边去

frame.origin.x =
0;

}else
if(frame.origin.x > maxX){

frame.origin.x = maxX; 
//限制移动的最右边

}

_mainView.frame = frame;

//
设置界面scale动画

CGFloat tx = frame.origin.x;

if (tx < 0) {

tx =
0;

}

CGFloat txScale = tx /
_settingsViewController.view.frame.size.width;

//
让imageview缩放

double scale =
kDefaultSettingScale + txScale * (1 -
kDefaultSettingScale);

if (scale > 1){

scale =
1;

}

CGAffineTransform cgTransform =
CGAffineTransformMakeScale(scale, scale);

[_settingsViewController
setAnimationScale:cgTransform];

}

#pragma mark 拖动结束,判断要往哪边滚动

- (void)endDrag{

int maxX = [self
getSettingRight];

int currentX = _mainView.frame.origin.x;

if (currentX < maxX *
0.5) {    //没到一半,回到左边

currentX =
0;

}else{     
//回到右边

currentX = maxX;

}

CGRect frame = _mainView.frame;

frame.origin.x = currentX;

[self
scrollMainViewToFrame:frame withDuration:0.25];

}

时间: 2024-08-06 13:20:28

hibou 主界面自定义侧滑的相关文章

android项目实战-背呗单词DEV05-主界面自定义menu

该篇说明 该篇我们进行主界面自定义底部菜单使用的讲解 主界面也就是当天任务界面FragmentActivity 自定义menu的功能需要导入V1UILibrary即可 源码地址:https://github.com/vomzoo/VOMAndroidUILib 在主界面只是调用自定义menu,具体实现暂请看V1UILibrary源码 效果如图 流程图 主要UI功能 1> 重写onCreateOptionsMenu并添加一项 /** * 自定义menu,必须创建一项 */ @Override pu

【Android】16.0 第16章 自定义服务和系统服务&mdash;本章示例主界面

分类:C#.Android.VS2015: 创建日期:2016-03-01 一.简介 本章主要演示Started Service.带Intent过滤器的Started Service.IntentService的基本用法,并简单介绍Android提供的系统服务. 二.本章示例主界面 1.运行截图 2.MainActivity.cs文件中对应的代码 chItems.Add(new Chapter() { ChapterName = "第16章 自定义服务和系统服务", ChapterIt

常规功能和模块自定义系统 (cfcmms)—009主界面和菜单的展示和控制(1)

常规功能和模块自定义系统 (cfcmms)-009主界面和菜单的展示和控制(1) 先从主界面和菜单.主tab标签以及一些附加的设置说起. 一个比较传统的管理软件中,一般会包括一个顶部区域.底部区域.菜单条(树状菜单)和主操作区域.本系统亦是如此,只是增加了一点灵活控制的地方.首先来看看本系统中的界面布局和extjs的类之间的对应关系,extjs中的面象对象的功能已经比较完善了,现在开发b/s程序就和我以前用组件开发delphi系统差不多,建好一个个组件类,然后直接使用即可. 和主界面.菜单相关的

自定义侧滑菜单

类似于QQ侧滑菜单的效果,这个最重要的就是改变摆放方式,从而达到自己想要的效果,首先先弄明白onLayout方法里的参数 这个自定义里最主要的就是通过touch事件来移动显示的范围,移动viewgroup主要有几个方法,onLayout offsetTopAndBottom(offset)和offsetLeftAndRight(offset); scrollTo和scrollBy方法; 注意:滚动的并不是viewgroup内容本身,而是它的矩形边框 它是瞬间移动, 这里我们用的是scrollTo

掌上快递之主界面篇(1)

概述 整体是通过2个Fragment+FragmentTabHost组合而成,本节主要针对Fragment1做一个总结,该Fragment主要实现以下功能 [1]输入快递单号或者扫描二维码 查询快递信息 [2]侧滑栏集成的百度地图可以显示附近快递点,方便选择合适自己的地点 本篇只总结主界面架构和功能1,先上图有个直观感受 1.主界面结构 Fragment+FragmentTabHost组合而成,其中整体的布局文件是在LinearLayout(vertical)的布局中嵌入了FrameLayout

Android 高仿微信6.0主界面 带你玩转切换图标变色

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41087219,本文出自:[张鸿洋的博客] 1.概述 学习Android少不了模仿各种app的界面,自从微信6.0问世以后,就觉得微信切换时那个变色的Tab图标屌屌的,今天我就带大家自定义控件,带你变色变得飞起~~ 好了,下面先看下效果图: 清晰度不太好,大家凑合看~~有木有觉得这个颜色弱爆了了的,,,下面我动动手指给你换个颜色: 有没有这个颜色比较妖一点~~~好了~下面开始介绍

iOS开发之主界面的左右滑动

前言:可能很多iOS开发者在学习之初都会对QQ的主界面的左滑与右滑动感到好奇,今天开始写我人生中的第一篇博客,即:iOS开发之Slide(主界面侧滑侧边栏). 正文: 首先,新建类(HomeViewController:命名随自己)继承ViewController. 然后我们需要声明这些属性: //滑动速度系数-建议在0.5-1之间.默认为0.5 @property (nonatomic, assign) CGFloat speedf; //左侧窗控制器 @property (nonatomic

高仿微信5.2.1主界面架构 包含消息通知

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/25708045 一哥们去新疆前给了我个任务,就是整这东西,哥们回来了,赶紧做了个,哈哈,可惜没给我带切糕. 新版微信的效果,一眼看上去准备用ViewpagerIndicator来实现,但是需要在Indicator的后面添加消息通知(BadgeView),可惜没有办法自定义Indicator,最后还是自己写了个实现. 主结构:ViewPager和FragmentPagerAdapt

Android应用主界面底部菜单实现

介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的  <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fragment出来后,就被抛弃了. 原理也很简单 1.底部菜单通过自定义RadioGroup实现,通过setOnCheckedChangeListener监听切换内容. 2.内容切换,可以使用ViewPager(可以实现直接滑动切换),TabHost,FragmentManager来实现.. PS:类似的,