2013-10-07 22 views
1

下面是从模拟器截图并保存图像:UIImage的节能问题iOS7:混合问题

enter image description here

编号:

UIGraphicsBeginImageContext(self.view.bounds.size); 

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *screenshotImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

//guru - just for simulator 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"Image.png"]; 

[UIImagePNGRepresentation(screenshotImage) writeToFile:filePath atomically:YES]; 
//end guru 

UIImageWriteToSavedPhotosAlbum(screenshotImage, nil, nil, nil); 

我怎样才能解决这个问题?当我使用Xcode4_iOS6构建时效果很好,但不适用于Xcode5_iOS7。

回答

2

您可以用这种方法解决它:

if([self IS_IOS_7]) 
    { 
     UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, TRUE, [[UIScreen mainScreen] scale]); 
    } 
    else 
    { 
     UIGraphicsBeginImageContext(self.view.bounds.size); 
    } 


    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    UIImage *screenshotImage = UIGraphicsGetImageFromCurrentImageContext(); 

    UIGraphicsEndImageContext(); 

    UIImageWriteToSavedPhotosAlbum(screenshotImage, nil, nil, nil); 

iOS7检查:

-(bool)IS_IOS_7 
{ 
    NSString *currOsVersion = [[UIDevice currentDevice] systemVersion]; 

    float sysver = [currOsVersion floatValue] ; 

    if(sysver >=7.0f) 
     return true; 

    return false; 
} 
+0

其工作。谢谢 – Guru

+1

IS_IOS_7真的有必要吗?您可以使用if(UIGraphicsBeginImageContextWithOptions!= NULL)在所有支持它的操作系统版本上利用该方法。 –

+0

是的,这是有效的。 – iPhoneProcessor