0

我的应用程序,我有一个 uiscrollview 并在其上有子视图 uiimageview,当用户单击它显示在该图像视图上的库中的任何照片时,用户可以移动、缩放和缩放图像,当用户单击裁剪按钮时,它应该裁剪该部分是在 imageview 中,在 iPhone 3GS 中它的工作非常好,但是在视网膜中它不能正常工作,裁剪显示不同的图像。

- (UIImage *)currentSlice {

    CGSize sliceSize = imageView.frame.size;

    UIGraphicsBeginImageContextWithOptions(sliceSize, NO, 0.0);
    [imageView.image drawInRect:CGRectMake(0, 0, sliceSize.width, sliceSize.height)];
    UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    CGRect sliceRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.width, scrollView.frame.size.height);
    CGImageRef imageSlice = CGImageCreateWithImageInRect(scaledImage.CGImage, sliceRect);
    return [UIImage imageWithCGImage:imageSlice];
}

我已经使用这种方法进行裁剪,请帮我解决这个问题

4

1 回答 1

0

帧大小不代表物理像素。因此,如果您正在使用视网膜,请进行以下更改。

CGSize sliceSize = CGSizeMake(imageView.frame.size.width * 2.0, imageView.frame.size.height * 2.0);

CGRect sliceRect = CGRectMake(scrollView.contentOffset.x, scrollView.contentOffset.y, scrollView.frame.size.width * 2.0, scrollView.frame.size.height * 2.0);

其余的都很好。

于 2012-08-24T12:39:22.313 回答