0

私は私のアプリで、1つのuiscrollviewがあり、その上にサブビューuiimageviewがあります。ユーザーがそのimageviewに表示されるライブラリから写真をクリックすると、ユーザーは画像を移動、ズーム、スケーリングできます。ユーザーがトリミングボタンをクリックすると、その部分をトリミングする必要がありますimageview では、iPhone 3GS では完全に正常に動作しますが、Retina では正しく動作せず、クロッピングによって別の画像が表示されます。

- (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

フレーム サイズは、物理的なピクセルを表すものではありません。そのため、Retina を使用している場合は、以下の変更を行ってください。

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 に答える