2

画像にテキストを追加しようとしていますが、uilabelas サブビューをuiimageview. 私はすでにそれを行っていますが、それらを画像として保存したいです。コンテキストでレンダリングを使用していますが、機能していません。

ここに私のコードがあります:

UIImage * img = [UIImage imageNamed:@"IMG_1650.JPG"];

        float x = (img.size.width/imageView.frame.size.width) * touchPoint.x;
        float y = (img.size.height/imageView.frame.size.height) * touchPoint.y;

        CGPoint tpoint = CGPointMake(x, y);

        UIFont *font = [UIFont boldSystemFontOfSize:30];
        context = UIGraphicsGetCurrentContext();
        UIGraphicsBeginImageContextWithOptions(img.size, YES, 0.0);
        [[UIColor redColor] set];

        for (UIView * view in [imageView subviews]){
            [view removeFromSuperview];
        }
             UILabel * lbl = [[UILabel alloc]init];
        [lbl setText:txt];
        [lbl setBackgroundColor:[UIColor clearColor]];
        CGSize sz = [txt sizeWithFont:lbl.font];
        [lbl setFrame:CGRectMake(touchPoint.x, touchPoint.y, sz.width, sz.height)];
        lbl.transform = CGAffineTransformMakeRotation( -M_PI/4 );

        [imageView addSubview:lbl];
        [imageView bringSubviewToFront:lbl];
        [imageView setImage:img];
        [imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
        [lbl.layer renderInContext:UIGraphicsGetCurrentContext()];

        UIImage * nImg = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
        UIImageWriteToSavedPhotosAlbum(nImg, nil, nil, nil);
4

1 に答える 1

5

以下のコードを試してください。わたしにはできる。

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

PS 重ねる必要はないと思いますrenderInContext UILabel

于 2012-09-30T21:36:40.897 に答える