0

次のコードを使用して、の内容を画像に変換してUIViewPNGます。

UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

これはうまくいきます。のUIView高さが 500 ピクセルで、2 つの画像 (上半分と下半分) を生成したい場合、どうすればよいでしょうか?

どんな助けでも大歓迎です。

4

1 に答える 1

1

これを行うにはいくつかの方法があります。1 つの方法は、それを 1 つの大きな画像に描画してから、2 つのサブ画像を作成することです。

static UIImage *halfOfImage(UIImage *fullImage, CGFloat yOffset) {
    // Pass yOffset == 0 for the top half.
    // Pass yOffset == 0.5 for the bottom half.

    CGImageRef cgImage = fullImage.CGImage;
    size_t width = CGImageGetWidth(cgImage);
    size_t height = CGImageGetHeight(cgImage);
    CGRect rect = CGRectMake(0, height * yOffset, width, height * 0.5f);

    CGImageRef cgSubImage = CGImageCreateWithImageInRect(cgImage, rect);
    UIImage *subImage = [UIImage imageWithCGImage:cgSubImage scale:fullImage.scale
        orientation:fullImage.imageOrientation];
    CGImageRelease(cgSubImage);
    return subImage;
}

...
    UIGraphicsBeginImageContext(myView.bounds.size);
    [myView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    UIImage *topHalfImage = halfOfImage(viewImage, 0);
    UIImage *bottomHalfImage = halfOfImage(viewImage, 0.5f);
于 2012-09-29T03:08:03.463 に答える