我的视图控制器中有一个 UIImageView 我需要拍摄它的截图。上面还有一个 UILabel 。UIImageView 并没有覆盖整个页面,只是其中的一部分。我怎样才能截取屏幕的一部分?
我敢打赌这个问题之前已经被问过,但我查看了这篇文章如何使用 UIGraphicsBeginImageContextWithOptions?它只是与未定义的变量混淆
到目前为止,我拥有的代码截取了整件事的屏幕截图。(不是我想要的)。我尝试使用 screenRect 没有任何效果。我想在拍摄全屏截图后裁剪图片,但问题是每个设备 iphone3、iphone4、iphone5、iPad 1、2、3 等的裁剪尺寸会有所不同。
所以我的问题是有没有办法在不经过裁剪路线的情况下截取一段屏幕截图?如果裁剪是唯一的方法,那么有没有一种方法可以可靠地剪切图片而不必担心具有高/低像素的不同 iOS 设备?
testBgImgVw = [[UIImageView alloc] initWithFrame:CGRectMake(0, 80, 320, 220)];
....
-(IBAction) takeScreenshot
{
CGRect screenRect = [[UIScreen mainScreen] bounds];
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
{
//its iphone
screenRect = CGRectMake(0, 0, 320, 480);
}
else
{
//its pad
screenRect = CGRectMake(0, 0, 768, 1024);
}
// This code is for high resolution screenshot
UIGraphicsBeginImageContextWithOptions(screenRect.size, NO, 0.0);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData* imageData = UIImageJPEGRepresentation(viewImage, 1.0);
NSString* incrementedImgStr = [NSString stringWithFormat: @"UserScreenShotPic.jpg"];
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString* documentsDirectory = [paths objectAtIndex:0];
// Now we get the full path to the file
NSString* fullPathToFile2 = [documentsDirectory stringByAppendingPathComponent:incrementedImgStr];
[imageData writeToFile:fullPathToFile2 atomically:NO];
}