snapshotViewAfterScreenUpdates在iOS 8上的故障

我注意到,运行这个会导致视图(或主窗口,不确定)调整时间的iPhone 6/6 +模拟器从iPhone 5布局缩放(无需传递iPhone 6/6 +启动图像):

[self.view snapshotViewAfterScreenUpdates:YES]; 

任何想法如何使它工作,当你不能通过'不'在那里?

更新(7月13日):
似乎不再在iOS 8.4上重现。

由于它看起来像一个苹果/ API的问题,我只是决定不使用这种方法,当我需要通过一个“是”。

你可以把视图的截图(UIImage)放在UIImageView中,作为你从快照方法获得的“UIView”。

这里有一个代码的链接: 如何将UIView捕获到UIImage而不损失视网膜显示质量

 #import <QuartzCore/QuartzCore.h> + (UIImage *) imageWithView:(UIView *)view { UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } 

我刚刚有这个问题。

原因是我没有适合iPhone 6和6 plus的启动图像。 我看到的另一个问题,因为这个不存在的图像,我得到了iPhone 5的大小,当我问屏幕大小的界限是这样的:

 CGSize screenSize = [[UIScreen mainScreen] bounds].size; 

当我修复这些图片时,这个问题已经解决了。

PS – 它应该工作,无论您使用资产目录或nib文件的启动图像。 在资产目录中,您应该在iOS 8及更高版本的右侧(Attributes Inspector)添加“V”,并为“ Retina HD 5.5 ”(6加)和“ Retina HD 4.7 ”(iPhone 6)

看来@anon和@PJC是正确的,这是一个UIKit的错误。 它有时可以通过[view.layer renderInContext:UIGraphicsGetCurrentContext()]

在这一点上,我已经通过手动调整iPhone 6/6 +的布局解决了自己的问题,因为本机设备的分辨率问题不会重现。