hibou 主界面自己侧滑的定义
2015-09-24 14:54
204 查看
要打滑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];
}
#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];
}
相关文章推荐
- Nagios 安装及微信短信提醒
- solr清空索引数据
- 美团二面被打击,遇到一个最基础的问题:Activity的生命周期,回来一番恶补,总结如下
- 或许之前我没有好好的做一些总结。
- MapperScannerConfigurer不 property-placeholder
- Python分析C盘大文件[夹]
- 手机拍照与相册获取
- 开发Chrome插件实现在Chrome中截取网页
- ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
- jvm参数说明
- 实战:把ASP.NET MVC中的Views下面的视图放到Views文件夹外
- 使用jquery+CSS3实现仿windows10开始菜单的下拉导航菜单特效
- Canvas(1)之HelloWorld
- 火狐浏览器爆内存溢出
- hdu 2069 1 5 10 25 50 这几种硬币 一共100个(母函数)
- 【WPF】Windows App 比例布局的实现
- SqlDataAdapter.FillSchema(DataTable)方法填充数据表的主键和约束
- linux串口编程
- shell批量杀进程
- Android 手势(Gesture)——手势检测