我注意到运行这会导致视图(或主窗口,不确定)调整片刻,当在iPhone 6/6 +模拟器上运行时,从iPhone 5布局缩放(不通过iPhone 6/6的启动图像) +):
[self.view snapshotViewAfterScreenUpdates:YES];
当你不能在那里传递'NO'时,有什么想法让它发挥作用吗?
更新(7月13日):
似乎不再在iOS 8.4上重现了。
答案 0 :(得分:13)
由于它看起来像Apple / API问题,我只是决定在我需要传递" YES时不使用该方法。"
您可以截取视图的截图(UIImage)并将其放在UIImageView中,以充当" UIView"你曾经从快照方法中获得。
这是代码的链接: How to capture UIView to UIImage without loss of quality on retina display
#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;
}
答案 1 :(得分:3)
我刚遇到这个问题。
原因是我没有适合iPhone 6或6 plus的发布图像。 我看到的另一个问题是因为这个不存在的图像,当我问这样的屏幕尺寸时,我得到了iPhone 5的尺寸:
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
当我修复这些图像时,此问题已修复。
P.S - 无论您使用资产目录还是nib文件作为启动图像,它都应该有效。 在资产目录中,你应该在iOS 8及更高版本的右侧添加'V'(属性检查器),并为' Retina HD 5.5 '(6加)和'设置图像Retina HD 4.7 '(适用于iPhone 6)
答案 2 :(得分:1)
似乎@anon和@PJC是正确的,这是一个UIKit的错误。它有时可以由[view.layer renderInContext:UIGraphicsGetCurrentContext()]
此时我通过手动调整iPhone 6/6 +的布局解决了我自己的问题,因为在本机设备分辨率上问题无法重现。