Yos*_*ssi 29 iphone xcode screenshot objective-c ios
我正在尝试与Facebook实现共享应用程序.我使用此代码截取屏幕截图:
CGSize imageSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
UIGraphicsBeginImageContext(imageSize);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
它在iOS 6上运行良好,但在iOS 7中,图像看起来很糟糕.我使用了这个答案:iOS:以编程方式制作屏幕截图的最快,最高效的方法是什么? 试图解决它,它有帮助,仍然截图看起来很糟糕.屏幕获得另一种颜色,并且在拍摄的图像上没有显示某些对象(如标签).有帮助吗?
---- ----更新
我设法解决了大多数对象,通过改变它们来保留而不是弱.我的主要问题仍然是我的tableview,显示为一个大的白色块(它应该是透明的,带有白色文本的标签,所以我们看到的只是白色单元格).我确实尝试将表格背景定义为clearcolor,没有帮助..
- - 最后更新 - -
这里有很好的答案,并不是真的与我的问题有关..我想让它在iOS7上运行但不使用iOS7 SDK的设备上运行,因为在这一点上,当项目切换项目SDK需要花费很多精力差不多完成了.
无论如何,我添加了最终解决了我的问题的代码的和平:
这个改变只是解决了这个问题:
UIGraphicsBeginImageContextWithOptions(imageSize, NO , 0.0f);
Run Code Online (Sandbox Code Playgroud)
代替:
UIGraphicsBeginImageContext(imageSize);
Run Code Online (Sandbox Code Playgroud)
Vin*_*zzz 55
自iOS 7以来添加了新的API,它应该提供获取快照的有效方法
snapshotViewAfterScreenUpdates: 将视图呈现为具有不可修改的UIView content
resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets :同样的事情,但有可调整大小的插图
drawViewHierarchyInRect:afterScreenUpdates: :同样的事情,如果你也需要绘制所有子视图(如标签,按钮...)
您可以将UIView返回的内容用于任何UI效果,或者将其渲染为图像,就像您需要导出一样.
我不知道这个新方法对你提供的VS有多好(虽然我记得Apple工程师说这个新API效率更高)
use*_*474 30
你可以试试这个
- (UIImage *) screenshot {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
Run Code Online (Sandbox Code Playgroud)
在iOS 8中:这就是我如何获得ScreenShot
@property(弱,非原子)IBOutlet UIImageView*imageView;
Run Code Online (Sandbox Code Playgroud)-(IBAction)takeSnapShot:(id)sender;
2添加了代码片段,用于拍摄屏幕截图并在.m文件中的 UIImageView 上设置
- (IBAction)takeSnapShot:(id)sender
{
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *snapShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
imageView.image = snapShotImage;
}
Run Code Online (Sandbox Code Playgroud)

在iOS7上,如果使用,可能会出现故障
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]
Run Code Online (Sandbox Code Playgroud)
在动画期间.设置afterScreenUpdates = NO摆脱毛刺.
| 归档时间: |
|
| 查看次数: |
38316 次 |
| 最近记录: |