【问题标题】:Cropping image same as updated version of Instagram裁剪图像与 Instagram 的更新版本相同
【发布时间】:2016-03-29 04:31:14
【问题描述】:

我想在我的应用程序中裁剪图像,与更新的 Instagram 相同。 我已经为它创建了一个演示。 但我在这个演示中遇到了 1 个问题。 问题是,当我放大图像然后尝试缩小一点时 UIImageview 完全缩小。请检查演示你明白我的意思,我试图解释 这是我的演示链接 https://drive.google.com/file/d/0Bw367uJS6w22OTNwTmdCNW5Ta3M/view?usp=sharing

【问题讨论】:

  • 制作适当的 gif 并在问题中分享并发布相关代码。外部链接将来可能无法正常工作,然后问题对其他人没有帮助。

标签: ios instagram crop zooming


【解决方案1】:

如果你想要像相机和图像选择器这样的 Instagram,你可以使用这个库

https://github.com/ytakzk/Fusuma

【讨论】:

【解决方案2】:

VPImageCropperViewController文件中你会找到一个方法

- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer you have to change in that code to work zoom out functionality.

- (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
{
    UIView *view = self.showImgView;
    if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
        view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
        //pinchGestureRecognizer.scale = 1;
                self.showImgView.contentMode=UIViewContentModeScaleAspectFit;
         NSLog(@"%f",pinchGestureRecognizer.scale);
//        pinchGestureRecognizer.view.transform = CGAffineTransformScale(pinchGestureRecognizer.view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
//        pinchGestureRecognizer.scale = 1;
    }
    else if (pinchGestureRecognizer.state == UIGestureRecognizerStateEnded) {

        NSLog(@"original image size%f",self.originalImage.size.width);
        NSLog(@"latestFrame image size%f",self.latestFrame.size.width);
//        NSLog(@"original image size%f",self.originalImage.size.width);
//        NSLog(@"original image size%f",self.originalImage.size.width);

      /*  if(pinchGestureRecognizer.scale <= 1.0)
        {

            // small
            CGRect newFrame = self.showImgView.frame;
            UIImage *img=[self imageWithImage:self.originalImage scaledToSize:self.cropFrame.size];
            newFrame = [self handleScaleOverflow:CGRectMake(0, 0, img.size.width, img.size.height)];
            newFrame = [self handleBorderOverflow:CGRectMake(0, 0, img.size.width, img.size.height)];
            newFrame = [self handleScaleOverflow:newFrame];
            newFrame = [self handleBorderOverflow:newFrame];
            [UIView animateWithDuration:BOUNDCE_DURATION animations:^{
                self.showImgView.frame = newFrame;
                self.latestFrame = newFrame;
                self.showImgView.contentMode=UIViewContentModeScaleAspectFit;

            }];
        }*/


       /* if(pinchGestureRecognizer.scale > 1.0)
        {*/
            // big
            CGRect newFrame = self.showImgView.frame;
            newFrame = [self handleScaleOverflow:newFrame];
            newFrame = [self handleBorderOverflow:newFrame];
            [UIView animateWithDuration:BOUNDCE_DURATION animations:^{
                self.showImgView.frame = newFrame;
                self.latestFrame = newFrame;
            }];
        //}

    }
}

也许对你有帮助。

【讨论】:

    【解决方案3】:

    在 VPImageCropperViewController.m 文件中进行更改

    // pinch gesture handler
        - (void) pinchView:(UIPinchGestureRecognizer *)pinchGestureRecognizer
        {
            UIView *view = self.showImgView;
    
            if (pinchGestureRecognizer.state == UIGestureRecognizerStateBegan || pinchGestureRecognizer.state == UIGestureRecognizerStateChanged) {
    
                view.transform = CGAffineTransformScale(view.transform, pinchGestureRecognizer.scale, pinchGestureRecognizer.scale);
                self.showImgView.contentMode=UIViewContentModeRedraw;
    
                self.editedImage=self.showImgView.image;
            }
            else if (pinchGestureRecognizer.state == UIGestureRecognizerStateEnded) {
    
    
                if(view.frame.size.width <= self.cropFrame.size.width && view.frame.size.height <= self.cropFrame.size.height)
                {
    
                    // Zoom out
                    CGRect newFrame = self.showImgView.frame;
    
                    UIImage *img=[self imageWithImage:self.originalImage scaledToSize:self.cropFrame.size];
    
                    newFrame = [self handleScaleOverflow:CGRectMake(0, 0, img.size.width, img.size.height)];
                    newFrame = [self handleBorderOverflow:CGRectMake(0, 0, img.size.width, img.size.height)];
                    newFrame = [self handleScaleOverflow:newFrame];
                    newFrame = [self handleBorderOverflow:newFrame];
                    [UIView animateWithDuration:BOUNDCE_DURATION animations:^{
                        self.showImgView.frame = newFrame;
                        self.latestFrame = newFrame;
                        self.showImgView.contentMode=UIViewContentModeScaleAspectFit;
                        CGRect cropRect = AVMakeRectWithAspectRatioInsideRect(self.showImgView.image.size, self.showImgView.frame);
    
                        NSLog(@"frame %f %f ",cropRect.size.width,cropRect.size.height);
                    }];
                }
                else
    
                {
                    // Zoom In
                    CGRect newFrame = self.showImgView.frame;
                    newFrame = [self handleScaleOverflow:newFrame];
                    newFrame = [self handleBorderOverflow:newFrame];
                    [UIView animateWithDuration:BOUNDCE_DURATION animations:^{
                        self.showImgView.frame = newFrame;
                        self.latestFrame = newFrame;
                    }];
                }
    
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2017-03-13
      • 2016-12-27
      • 2021-06-02
      • 2017-05-22
      • 2020-10-11
      相关资源
      最近更新 更多