2011-03-26 135 views
0

我有以下代碼,它在調用drawRect時顯示圖像。在drawRect中旋轉UIImage

UIImage *sourceImage = [UIImage imageNamed:@"icon.png"];  


CGRect rect = CGRectMake(12.5, 12.5, 
         sourceImage.size.width, 
         sourceImage.size.height); 

[sourceImage drawInRect:rect]; 

我怎樣才能得到這個由多個度旋轉,它被繪製之前,一切我讀需要它似乎沉重的drawRect中

回答

6
UIImage *image = [UIImage imageNamed:@"icon.png"]; 
UIImageView *imageView = [ [ UIImageView alloc ] initWithFrame:CGRectMake(0.0, 0.0, image.size.width, image.size.height) ]; 
imageView.image = image; 
[self addSubview:imageView]; 
CGAffineTransform rotate = CGAffineTransformMakeRotation(1.0/180.0 * 3.14); 
[imageView setTransform:rotate]; 
+2

只有評論:如果沒有別的,爲了清晰起見,可能最好使用M_PI而不是3.14,如果你設置了一個變換,不要忘記'frame'不應該被使用,而這通常也會阻止正確的界面方向變化時的行爲。 – Tommy 2011-03-26 12:36:33

+0

好的,謝謝。 – 2011-03-26 13:03:07

+0

我明白了M_PI的意思,但不是框架。這與我的代碼有什麼關係? – 2011-03-26 13:06:28

4

旋轉ImageView的(或任何其他轉型由變換矩陣完成)不是「重」。所有的轉換基本上是一個向量和矩陣小的簡單乘法(見Apple's Quartz 2D documentation for the math

使用CGContextRotateCTM(context, radians);[sourceImage drawInRect:rect];繪製圖像之前。如果您需要圍繞另一點旋轉圖像,請首先使用CGContextTranslateCTM進行翻譯。