0

屏幕截图,960*640,但带有 44pix 透明状态栏

屏幕截图,960*640,但图片顶部有 44pix 透明状态栏。

如何拍摄 916pix 高度的图片?我不需要顶部的空白栏。

这是我的代码:

-(void)takeScreenShot{
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    CGSize imageSize = [[UIScreen mainScreen] bounds].size;
    if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]){
        UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0.0f);
    }else{
        UIGraphicsBeginImageContext(imageSize);
    }
    [window.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    NSData * data = UIImagePNGRepresentation(image);
    //
    NSString *documentsDirectory= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
    NSString *filePath= [documentsDirectory stringByAppendingPathComponent:@"SYS_screen_shot@2x.png"];
    //
    [data writeToFile:filePath atomically:YES];
}
4

1 回答 1

0

您可以使用此访问应用程序框架 [[UIScreen mainScreen] applicationFrame]
这将为您提供应用程序在屏幕上的位置


[window.rootViewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];

如果你想要的是root view你的应用程序,你应该把这个观点看成renderInContext. 我刚刚对其进行了测试,并且可以正常工作。

于 2012-12-04T02:00:40.563 回答