2012-01-26 41 views
0

我試圖讓從CALayer的,我以前轉動的UIImage的:獲得的UIImage從旋轉calayeer

//Creates the rotation affine transform 
m_transformada = CGAffineTransformIdentity; 
m_transformada = CGAffineTransformRotate(m_transformada, M_PI/4); 
// Apply the affine transform to a UIVIewImage object 
m_PhotoView.transform = m_transformada; 

// Get's the UIImage from the UIViewImage 
UIGraphicsBeginImageContext([m_PhotoView.layer frame].size); 
[m_PhotoView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *outputImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

的outputImage不旋轉...任何人都知道這是爲什麼? 謝謝,

回答

1

圖層上的變換會影響其上層中的幾何體,而不會影響圖層本身。

像這樣的東西就可以了(這意味着在被混合和/或以其他方式改編):

- (UIImage*)renderToImageRotated:(float)scale { 
    float tx = self.frame.size.width; 
    float ty = self.frame.size.height; 
    CGSize size = CGSizeMake(self.frame.size.height, self.frame.size.width); 
    UIGraphicsBeginImageContextWithOptions(size, NO, scale); 
    CGContextRef c = UIGraphicsGetCurrentContext(); 
    CGContextTranslateCTM (c, ty/2, tx/2); 
    CGContextRotateCTM(c, M_PI/2); 
    CGContextTranslateCTM (c, -tx/2, -ty/2); 
    [self.layer renderInContext:c]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
+0

我會盡快,我可以,如果它的作品,你是我的新英雄嘗試;-) – pocjoc

+0

謝謝,有一點修改它的作品! – pocjoc