Ios 为屏幕截图以编程方式限制屏幕
我正在制作与图像相关的应用程序。 我的屏幕上有多个图像。 我已经拍了那张照片。 但我想拍一些有限区域的屏幕截图, 所以基本上我想限制屏幕截图的帧。 下面是我的屏幕截图代码Ios 为屏幕截图以编程方式限制屏幕,ios,image,screenshot,Ios,Image,Screenshot,我正在制作与图像相关的应用程序。 我的屏幕上有多个图像。 我已经拍了那张照片。 但我想拍一些有限区域的屏幕截图, 所以基本上我想限制屏幕截图的帧。 下面是我的屏幕截图代码 -(UIImage *) screenshot { UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [UIScreen mainScreen].scale); [self.view drawViewHierarchyInRe
-(UIImage *) screenshot
{
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.frame afterScreenUpdates:YES];
image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
拍摄完屏幕截图后,我用下面的代码在facebook共享方法中使用它
UIImage *image12 = [self screenshot];
[mySLComposerSheet addImage:image12];
比如:
-(UIImage *)ConvertToImage:(UIView *)view
{
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
}
如果我理解正确,你需要截图并裁剪它。有很多选择,这是其中之一:
UIGraphicsBeginImageContext(self.view.frame.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); /* this is the full capture */
CGRect r = (CGRect){{image.size.width * 0.25, image.size.height * 0.25}, {image.size.width / 2, image.size.height / 2}};
CGImageRef ref = CGImageCreateWithImageInRect(image.CGImage, r);
UIImage *cropped = [UIImage imageWithCGImage:ref]; /* this is the center area */
CGImageRelease(ref);
UIGraphicsEndImageContext();
只需捕获正确的视图并计算正确的矩形
在iOS 7中,您可以使用
UIView
更快的drawViewHierarchyInRect:AfterScreen更新:
而不是RenderContext
,,因此您在这里需要的是什么…想要为快照提供自定义帧,而上面的代码不会为我提供整个屏幕的图像。通过使用此代码,在截屏图像中,我想解决的问题是,在图像中看不到顶部和底部的小部分。我可以为其提供矩形框吗?我认为用户可以将其视为框架,尝试使其透明,并将其放置在您喜欢的图像(或图像的一部分)上,然后调用此方法。。。我不知道你做的是否正确,因为我用的是这段代码,对我来说效果很好,但它并没有给我一个完美的视图快照,快照时我的某个角落看不到。我不知道你做的是否正确,因为我用的是这段代码,对我来说效果很好。我正在为iphone ratina 4英寸做这段代码,我希望这不会造成任何问题。我已经更改了代码的一行[self.layer renderInContext:UIGraphicsGetCurrentContext()];至[self.view drawViewHierarchyInRect:self.view.frame AfterScreen更新:是];我的问题是,我使用的代码是我在这个que中编写的,通过使用屏幕快照图像不显示我的整个屏幕,在屏幕快照图像中看不到最顶部和最底部屏幕的一小部分。帮帮我,我不知道有什么问题。如果要捕获整个屏幕,请使用顶层窗口而不是self.view。