2

元の画像よりも小さい画像の UIImageView があります。次に、他の多くの UIImageView をサブビューとしてメイン イメージビューに追加しました。また、多くのサブビュー (imageview) のスケーリングと回転も行います。ここで、元の画像からすべてのサブビュー画像を画像ビューに添付して画像を作成したいが、位置を維持したい。私の質問は、スケーリング後に多くのサブビュー画像を元の画像に描画して回転させる方法です。CGContextRotateCTM を使用しましたが、回転しすぎているようです。私のサンプルコードが

CGContextRef context = UIGraphicsGetCurrentContext();
[originalImage drawAtPoint:CGPointZero];
for(UIView *aView in [self.mainImageView subviews]){
    float rate = 1000/self.mainImageView.frame.size.width;
    if(aView.tag != DELETE_ATTACH_IMAGEVIEW_TAG && aView.tag != ROTATE_ZOOM_IMAGEVIEW_TAG){
        CGRect rect = CGRectMake(aView.frame.origin.x*rate, aView.frame.origin.y*rate, aView.frame.size.width *rate, aView.frame.size.height*rate);
        if([aView isKindOfClass:[CustomImageView class]]){
            CustomImageView *temp = (CustomImageView *)aView;
            float rotation = [temp rotation];
            UIImage *tempImage= temp.image;
            CGContextRotateCTM(context, rotation);
            [tempImage drawInRect:rect];
        }

    }

}
originalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
4

1 に答える 1

2

このビュー全体をキャプチャし、この画像全体から1つの画像で使用した後

- (UIImage *)captureView {

   //hide controls if needed
    CGRect rect = [self.view bounds];

    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    [self.view.layer renderInContext:context];   
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return img;

}

この画像をキャプチャした後、背景として設定し、必要がない場合は他のすべての画像を削除します。

于 2012-11-26T10:38:57.797 に答える