UIApplication sharedApplication keyWindow - iOS App Widget
Posted
技术标签:
【中文标题】UIApplication sharedApplication keyWindow - iOS App Widget【英文标题】: 【发布时间】:2015-04-14 05:56:01 【问题描述】:我有一个适用于 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 上不可用(应用程序扩展) - 在适当的情况下使用基于视图控制器的解决方案。
有谁知道我该如何解决这个问题?
谢谢,丹。
【问题讨论】:
【参考方案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;
【讨论】:
感谢您的帮助:)以上是关于UIApplication sharedApplication keyWindow - iOS App Widget的主要内容,如果未能解决你的问题,请参考以下文章