绘制图像约束方面

时间:2012-02-16 13:44:16

标签: iphone cocoa-touch uiimageview uiimage

我有一个imageview,此imageview中的图像供您选择光电。我还有一个按钮,当您单击此按钮时,会有一个图像添加到带有addSubview代码的视图中。这张图片是可拖动的,可调整大小和可旋转的。

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

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();

1 个答案:

答案 0 :(得分:0)

所以你想要拍摄实际图像视图的“截图”(包含子视图),不是吗?

我使用这段代码做了类似的事情,但不知道是否适合你。

     - (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中添加此方法(包含您要添加的所有子视图的方法)。