1

互いに重ねられた2つの UIImageView を持つアプリがあります。backgroundImg と FrontImg があります。UIGestureRecognizers を使用して、frontImg を回転、移動、スケーリングできます。

UIImages を保存したいときはそれらをマージしますが、それらはまったく触れられていないかのように保存されます。

これを修正する方法を知っている人はいますか?

これが私の保存方法です: UIGraphicsBeginImageContext(self.backgroundImg.image.size);

    CGRect rect = CGRectMake(0, 0, self.backgroundImg.image.size.width, self.backgroundImg.image.size.height);
    self.frontImg.contentMode = UIViewContentModeScaleAspectFit;
    [self.backgroundImg.image drawInRect:rect];
    [self.frontImg.image drawInRect:rect];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    //[imageView3 setImage:resultingImage];

    UIGraphicsBeginImageContextWithOptions(self.backgroundImg.bounds.size, NO,0.0);
    [self.backgroundImg.image drawInRect:CGRectMake(0, 0, self.backgroundImg.frame.size.width, self.backgroundImg.frame.size.height)];
    //UIImage *SaveImage = UIGraphicsGetImageFromCurrentImageContext();
    //UIImage *resultingImage = [self mergeImage:self.backgroundImg.image withImage:self.frontImg.image];
    UIGraphicsEndImageContext();
    UIImageWriteToSavedPhotosAlbum(resultingImage, self,@selector(image:didFinishSavingWithError:contextInfo:), nil);

これらは私のジェスチャー機能です:

-(IBAction)handlePan:(UIPanGestureRecognizer *)recognizer{
    CGPoint translation = [recognizer translationInView:self.view];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

-(IBAction)handlePinch:(UIPinchGestureRecognizer *)recognizer
{
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale =1;
}

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
    return ![gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}

-(IBAction)handleRotate:(UIRotationGestureRecognizer *)recognizer
{
    recognizer.view.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
    self.frontImg.transform = CGAffineTransformRotate(recognizer.view.transform, recognizer.rotation);
    recognizer.rotation = 0;
}
4

1 に答える 1

0

正面の画像は、ビューにある座標、スケールなどで描画されていません。背景と同じ四角形(0、0、backgroundWidth、backgroundHeight)で描画しています。グラフィック コンテキストに描画するときに、適切な位置、サイズ、縮尺が得られていることを確認する必要があります。

両方の画像が同じビューに含まれている場合は、そのビューのスクリーンショットを作成できます。この投稿が役に立ちます: http://ios-dev-blog.com/how-to-create-uiimage-from-uiview/

于 2012-11-02T19:22:13.150 に答える