我有一个简单的应用程序和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上不可用(应用扩展程序) - 请在适当情况下使用基于视图控制器的解决方案。
有谁知道如何解决此问题?
谢谢,Dan。
答案 0 :(得分:1)
因此您无法访问扩展程序中的共享应用程序。所以这里有一些不同的方法来实现你想要的。
尝试使用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;
}