我注意到运行这会导致视图(或主窗口,不确定)在从 iPhone 5 布局缩放的 iPhone 6/6+ 模拟器上运行时暂时调整大小(不传递 iPhone 6/6+ 的启动图像):
[self.view snapshotViewAfterScreenUpdates:YES];
当你不能在那里传递“不”时,知道如何让它工作吗?
更新(7 月 13 日):
似乎不再在 iOS 8.4 上重现。
我注意到运行这会导致视图(或主窗口,不确定)在从 iPhone 5 布局缩放的 iPhone 6/6+ 模拟器上运行时暂时调整大小(不传递 iPhone 6/6+ 的启动图像):
[self.view snapshotViewAfterScreenUpdates:YES];
当你不能在那里传递“不”时,知道如何让它工作吗?
更新(7 月 13 日):
似乎不再在 iOS 8.4 上重现。
由于这似乎是一个 Apple/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 及更高版本的右侧(属性检查器)中添加“V”,并为“ Retina HD 5.5 ”(适用于 6 plus)和“ Retina HD 4.7 ”(适用于 iPhone 6)设置图像
@anon 和 @PJC 似乎是对的,这是 UIKit 的错误。有时可以通过以下方式解决[view.layer renderInContext:UIGraphicsGetCurrentContext()]
在这一点上,我已经通过手动调整 iPhone 6/6+ 的布局为自己解决了这个问题,因为在本机设备分辨率上问题不会重现。