设为首页 加入收藏

TOP

图片裁剪/滤镜渲染(五)
2019-08-30 01:12:11 】 浏览:167
Tags:图片 裁剪 滤镜 渲染
distanceY, self.imgView.frame.size.width * scale, self.imgView.frame.size.height * scale); self.imgView.frame = newFrame; pinGes.scale = 1; } // if (pinGes.state == UIGestureRecognizerStateEnded) { //不能过小 if (CGRectGetMinY(self.imgView.frame)>self.clipAreaLayer.topEdge || CGRectGetMaxY(self.imgView.frame)<self.clipAreaLayer.bottomEdge || CGRectGetMinX(self.imgView.frame)>self.clipAreaLayer.leftEdge || CGRectGetMaxX(self.imgView.frame)<self.clipAreaLayer.rightEdge) { self.imgView.frame = CGRectMake(self.clipAreaLayer.leftEdge, self.clipAreaLayer.topEdge, self.clipAreaWidth, self.clipAreaHeight); } //不能过大 CGFloat scaleNum = 10; CGFloat originalImgViewWidth = CGRectGetWidth(_originalImgViewFrame); if (CGRectGetWidth(self.imgView.frame)/originalImgViewWidth>scaleNum) { self.imgView.frame = _originalImgViewFrame; CGFloat distanceX = self.imgView.frame.origin.x - pinchCenter.x; CGFloat distanceY = self.imgView.frame.origin.y - pinchCenter.y; CGFloat scaledDistanceX = distanceX * scaleNum; CGFloat scaledDistanceY = distanceY * scaleNum; CGRect newFrame = CGRectMake(self.imgView.frame.origin.x + scaledDistanceX - distanceX, self.imgView.frame.origin.y + scaledDistanceY - distanceY, self.imgView.frame.size.width * scaleNum, self.imgView.frame.size.height * scaleNum); self.imgView.frame = newFrame; pinGes.scale = 1; } // NSLog(@"self.imgView.frame-----scale------%@", NSStringFromCGRect(self.imgView.frame)); // } //缩放完后,需要点击一下图片才会执行该if语句————如何自动执行,待解决 if (pinGes.state == UIGestureRecognizerStateEnded) { [self configShadowArea]; } // self.resetBtn.hidden = NO; }

//旋转

case 301://旋转90度——顺时针
        {
            _rorateNum++;
            
            [UIView animateWithDuration:0.5 animations:^{
                self.shaView.isSetShadow = NO;
            }];
            self.clipAreaLayer.hidden = YES;
            CGFloat dura = 1.0f;
            
            //旋转前:记录imgView与clipAreaLayer左边和底边的距离
            CGFloat preRoOffsetX = fabs(CGRectGetMaxY(self.imgView.frame)-self.clipAreaLayer.bottomEdge);
            CGFloat preRoOffsetY = fabs(CGRectGetMinX(self.imgView.frame)-self.clipAreaLayer.leftEdge);
            
            //旋转
            [UIView animateWithDuration:dura animations:^{
                CGAffineTransform trans = CGAffineTransformMakeRotation(_valueOffset);
                self.imgView.transform = trans;
            }];
            
            _valueOffset += M_PI_2;
            if (_rorateNum == kRotateNumMax) {
                _valueOffset = M_PI_2;
                _rorateNum = 0;
            }
            
            //切换坐标——imgView的frame自动修正
            [self changeXYWithRotation:_valueOffset];
            UIImage *agerImage = [self getRotatedImg];
            self.targetImg = agerImage;
            
            CGFloat temp = self.clipAreaWidth;
            self.clipAreaWidth = self.clipAreaHeight;
            self.clipAreaHeight = temp;
            CGFloat scale = [self drawClipArea];
//            [self setUpClipLayer:YES];
            
            //旋转后:调整imgView的位置——左变上,底变左
            self.imgView.frame = CGRectMake(self.clipAreaLayer.leftEdge-preRoOffsetX, self.clipAreaLayer.topEdge-preRoOffsetY, CGRectGetWidth(self.imgView.frame), CGRectGetHeight(self.imgView.frame));
            
            //缩放
            CABasicAnimation *baAniScale = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
            baAniScale.beginTime = dura;
            baAniScale.duration = dura;
            baAniScale.fromValue = @1;
            baAniScale.toValue = @(scale);
            [self.imgView.layer addAnimation:baAniScale forKey:nil
首页 上一页 2 3 4 5 6 下一页 尾页 5/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇iOS-AFN Post JSON格式数据 下一篇iOS----------时间戳与NSDate

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目