2012-10-22 57 views
2

我已經看到了很多關於截圖的問題和答案,我知道該怎麼做,這不是我的問題,這是我的代碼:如何拍攝圓形截圖?

- (void)takeScreenShot 
{ 
    //UIGraphicsBeginImageContextWithOptions(CGSizeMake(320, 340), YES, 0.); 
    UIGraphicsBeginImageContext(CGSizeMake(320, 480)); 
    [self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
} 

怎麼可能把一個圓截屏而不是隻有320x480方框?

回答

3

你可以試試這個:

- (UIImage *)takeRoundedScreenShot:(CGPoint)center 
{ 
    float cornerRadius = self.view.window.layer.cornerRadius; 
    CGAffineTransform savedTransform = self.view.window.transform; 

    UIGraphicsBeginImageContext(CGSizeMake(320, 320)); 
    self.view.window.layer.cornerRadius = 160; 
    self.view.window.clipsToBounds = YES; 
    self.view.window.transform = CGAffineTransformMakeTranslation(-(center.x-160), -(center.y-160)); 
    [self.view.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    self.view.window.transform = savedTransform; 
    self.view.window.layer.cornerRadius = cornerRadius. 

    return viewImage; 
} 
+3

你應該採取的截圖後恢復視圖狀態:P – Lefteris

+1

@Lefteris:你是完全正確的!謝謝你... – sergio

+0

感謝您的評論,但我不斷收到此錯誤:「從以下行中指定'CGAffineTransform'(又名'struct CGAffineTransform')從可分類類型'int'」「:self.view.window.transform = CGAffineTransformTranslateMake( - (center.x-160), - (center.y-160));「 –