我为iOS 8提供了一个简单的应用程序和小部件,我正在使用UIImage+ImageEffects源文件。该库中的一个函数称为"convertViewToImage“,它包含以下代码:
+ (UIImage *)convertViewToImage
{
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
CGRect rect = [keyWindow bounds];
UIGraphicsBeginImageContextWithOptions(rect.size, YES, 0.0f);
CGContextRef context = UIGraphicsGetCurrentContext();
[keyWindow.layer renderInContext:context];
UIImage *capturedScreen = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return capturedScreen;
}但是,该方法的第一行在应用程序扩展中编译时会出现错误。
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
得出以下错误:
sharedApplicaion不可用:在iOS (应用程序扩展)上不可用--酌情使用基于视图控制器的解决方案。
有人知道我该怎么解决这个问题吗?
谢谢丹。
发布于 2015-04-14 06:32:57
因此,您不能在扩展中访问共享应用程序。因此,这里有一些不同的方法来实现你想要的。
尝试使用snapshotVieAfterScreenUpdates方法
[self.myViewToConvertToImage snapshotViewAfterScreenUpdates:YES];这将返回一个UIView,它是复杂视图的快照。
或者,如果您在UIImage之后做了一些处理
试一试
- (UIImage *)imageFromView:(UIView *)view
{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0.0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:NO];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}https://stackoverflow.com/questions/29620093
复制相似问题