drawInRect不保留变换

时间:2010-11-14 00:50:54

标签: iphone objective-c cocoa-touch ipad uikit

    UIGraphicsBeginImageContext(backgroundImageView.frame.size);

    UIImageView *image1 = backgroundImageView;
    UIImageView *image2 = boat;

    // Draw image1  
    [image1.image drawInRect:CGRectMake(0, 0, image1.image.size.width, image1.image.size.height)];  

    // Draw image2  
    [image2.image drawInRect:CGRectMake(boat.center.x, boat.center.y, boat.image.size.width, boat.image.size.height)];  


    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

当显示resultImage时,我将image2设置为等于船UIImageView后,不会保留image2的变换角度值。我认为当我设置image2 = boat时,船的变换值会转移到image2。

我怀疑这与我正在使用UIImageView而不是UIVIew这一事实有关。我尝试了很多不同的东西,但一直无法解决这个问题。

任何帮助都将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:3)

当您将图像绘制到图形上下文中时,它使用上下文的变换矩阵,该矩阵不同于应用于视图的任何变换。因此,image2(大概是UIImageView)的转换与直接图像绘制完全无关。

您可以使用Quartz中的各种CGContextCGAffineTransform函数指定新转换,也可以直接应用 UIImageView'的副本像这样的转变:

CGContextConcatCTM(UIGraphicsGetCurrentContext(), someView.transform);
[someView.image drawInRect: CGRectMake(...)];