2013-10-31 25 views
1

当我在drawInRect中捏住,平移或旋转UIImageview时,我遇到了一个问题,该变换未被保留。drawInRect不读取/保留UIImageView变换

如何保留drawInRect中的变换?

我试过,但没有去:(

- (UIImage*) combineImage:(UIImageView *)selectedImage withOverlay:(UIImageView *)overlayImage 
{ 
    /* Identify the region that needs to be cropped */ 
    CGRect viewForImgFrame = self.viewForImg.frame; 
    NSLog(@"view %@", NSStringFromCGRect(viewForImgFrame)); 
    NSLog(@"selectedImage Img value %@",selectedImage); 
    NSLog(@"overlayImage Img value %@",overlayImage); 
    CGSize newImageSize =self.viewForImg.frame.size; 
    NSLog(@"CGSize %@",NSStringFromCGSize(newImageSize)); 
    UIGraphicsBeginImageContextWithOptions(newImageSize, NO, 0.0); //retina res 

    //[self.viewForImg.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    [selectedImage.image drawInRect:CGRectMake(0, 0, selectedImage.frame.size.width, selectedImage.frame.size.height)]; 

    CGContextConcatCTM(UIGraphicsGetCurrentContext(), overlayImage.transform); 

    [overlayImage.image drawInRect:CGRectMake(overlayImage.frame.origin.x, overlayImage.frame.origin.y, overlayImage.frame.size.width, overlayImage.frame.size.height)]; 


    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    NSData *imgData = UIImageJPEGRepresentation(image, 0.9); //UIImagePNGRepresentation (image); // get JPEG representation 
    UIImage * imagePNG = [UIImage imageWithData:imgData]; // wrap UIImage around PNG representation 
    UIGraphicsEndImageContext(); 
    return imagePNG; 
} 

任何意见是极大的赞赏。

+0

请显示整个'drawRect:'方法的实现。 – trojanfoe

+0

嗨trojanfoe,更新谢谢 – Desmond

回答

0

转过身来out AutoresizingMask改变矩形尺寸

[slider setAutoresizingMask:UIViewAutoresizingNone]; 
1

你需要尝试

CGRectApplyAffineTransform(<#CGRect rect#>, <#CGAffineTransform t#>) 

你的代码应该像

CGContextConcatCTM(UIGraphicsGetCurrentContext(), overlayImage.transform); 
CGRect rect = CGRectMake(overlayImage.frame.origin.x, overlayImage.frame.origin.y, overlayImage.frame.size.width, overlayImage.frame.size.height); 
CGRect transformedRect = CGRectApplyAffineTransform(rect, overlayImage.transform); 
[overlayImage.image drawInRect:transformedRect]; 
+0

您好塔尔哈, 感谢您的答复,不幸的是它的工作。覆盖层消失了 – Desmond