zoukankan      html  css  js  c++  java
  • 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];

    }


    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    JqueryQrcode生成二维码不支持中文的解决办法
    [转载]浅析海量用户的分布式系统设计
    [转载]大型网站应用中 MySQL 的架构演变史
    CSS3变形记(上):千变万化的Div
    JavaScript进阶之路——认识和使用Promise,重构你的Js代码
    Visual Studio Code预览版Ver 0.3.0试用体验
    Apache Spark 2.3.0 正式发布
    Apache Spark 2.2.0 新特性详细介绍
    Apache Spark 2.2.0 正式发布
    Spark 论文篇-论文中英语单词集
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4835348.html
Copyright © 2011-2022 走看看