2012-02-16 23 views
0

我有一个imageview,这个imageview内的图像是给你从photoroll中选择。我也有一个按钮,当你点击这个按钮时,有一个图像通过addSubview代码添加到视图中。这张图片可以拖动,调整大小和旋转。绘制图像约束方面

一个问题,当我完成图像时,我使用drawInRect方法。这将所有图层绘制到彼此上并创建图像。但是图层位置错误,尺寸错误。它也永远不会旋转。我不知道如何解决这个问题,这段代码就在这段文字的下面。是否有可能保持原始图像的大小,并仍然在同一个地方绘制图层,我将它们拖到imageview上,如果不是,我如何为此创建一个新的大小并获得我想要的结果。如何绘制旋转的图像。

UIGraphicsBeginImageContext(imageView2.image.size);  
// Draw image1 
[imageView2.image drawInRect:CGRectMake(0, 0, imageView2.image.size.width, imageView2.image.size.height)];  
// Draw image2 
for(UIImageView *viewsSub in [self.imageViewer subviews]) 
{    
    [viewsSub.image drawInRect:CGRectMake(viewsSub.frame.origin.x, viewsSub.frame.origin.y, viewsSub.frame.size.width, viewsSub.frame.size.height)]; 
}  
UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();  
pld.imageChosen2 = resultingImage;  
UIGraphicsEndImageContext(); 

回答

0

所以,你想要像你的实际imageview(包括子视图)“截图”的东西,是吗?

我用这段代码做类似的事情,但不知道是否会为你工作。

 - (UIImage *)screenshot { 
     CGFloat scale = [UIScreen screenScale]; 

     if(scale > 1.5) { 
      UIGraphicsBeginImageContextWithOptions(self.frame.size, NO, scale); 
     } else { 
      UIGraphicsBeginImageContext(self.frame.size); 
     } 
     [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
     UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
     return screenshot; 
} 

您应该将ImageView的(包含所有要添加的子视图之一)内添加此方法。

+0

很有效,非常感谢! – 2012-02-16 15:56:52