zoukankan      html  css  js  c++  java
  • 手势拖动. 约束图片边缘 .限制拉动范围

    @implementation WDEnterLineViewController{
        
        float xx;
        float yy;
        UIImageView *bgImgView;
    }
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        
        [self createLayout];
        
    }
    
    
    -(void)createLayout{
        
        bgImgView = [[UIImageView alloc]init];
        
        UIImage *image = [UIImage imageNamed:@"110"];
        bgImgView.image = image;
        CGImageRef imageRef = [image CGImage];
        CGSize size = CGSizeMake(CGImageGetWidth(imageRef), CGImageGetHeight(imageRef));
        xx = size.width;
        yy = size.height;
        WDLog(@"%f====%f",xx,yy);
        [self.view addSubview:bgImgView];
        
        [bgImgView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.centerX.equalTo(self.view.mas_centerX);
            make.centerY.equalTo(self.view.mas_centerY);
            make.width.offset(size.width);
            make.height.offset(size.height);
            
        }];
        
        
        [self addGestureRecognizerToView:bgImgView];
        
        //如果处理的是图片.
        [bgImgView setUserInteractionEnabled:YES];
        [bgImgView setMultipleTouchEnabled:YES];
        
    }
    
    // 添加手势
    - (void) addGestureRecognizerToView:(UIView *)view
    {
        // 移动手势
        UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panView:)];
        [view addGestureRecognizer:panGestureRecognizer];
    }
    
    
    // 处理拖拉手势
    - (void) panView:(UIPanGestureRecognizer *)panGestureRecognizer
    {
        UIView *view = panGestureRecognizer.view;
        if (panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateChanged) {
            CGPoint translation = [panGestureRecognizer translationInView:view.superview];
            [view setCenter:(CGPoint){view.center.x + translation.x, view.center.y + translation.y}];
            [panGestureRecognizer setTranslation:CGPointZero inView:view.superview];
        }else if(panGestureRecognizer.state == UIGestureRecognizerStateEnded){
            WDLog(@"-centerX:%f===centerY:%f",bgImgView.center.x,bgImgView.center.y);
            WDLog(@"%f====%f",self.view.center.x,self.view.center.y)
            
            CGPoint point = CGPointMake(bgImgView.center.x, bgImgView.center.y);
            
            
            if (point.x >= xx / 2) {
                point.x = xx / 2;
            };
            if (point.x <= self.view.center.x - (xx - APP_WIDTH) / 2) {
                point.x = self.view.center.x - (xx - APP_WIDTH) / 2;
            };
            if (point.y >= yy / 2 + 64) {
                point.y = yy / 2 + 64;
            };
            if (point.y <= self.view.center.y - (yy - APP_HEIGHT) / 2) {
                point.y = self.view.center.y - (yy - APP_HEIGHT) / 2;
            };
            
            bgImgView.center = point;
        }
    }
  • 相关阅读:
    jenkins配置QQ邮箱自动发送RF测试构建结果通知邮件
    扩展RF,实现失败用例自动再执行
    python-函数-非固定参数
    robot framework 中对于有滚动条的页面中元素的处理
    selenium(python)下定位单个元素的常用方法
    selenium(python)close与quit的区别
    Robot FrameWork UI自动化脚本稳定性与原生关键字
    深copy和浅copy(python)
    尚硅谷MySQL高级_笔记(2018年10月5日22:55:39)
    云知梦css学习笔记(2018年4月1日16:18:17)
  • 原文地址:https://www.cnblogs.com/-yun/p/7338439.html
Copyright © 2011-2022 走看看