21

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

[self.view snapshotViewAfterScreenUpdates:YES];

当你不能在那里传递“不”时,知道如何让它工作吗?

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

4

3 回答 3

13

由于这似乎是一个 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;
}
于 2014-09-24T19:20:39.297 回答
3

我刚遇到这个问题。

原因是我没有适合 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)设置图像

于 2014-11-16T15:38:34.510 回答
1

@anon 和 @PJC 似乎是对的,这是 UIKit 的错误。有时可以通过以下方式解决[view.layer renderInContext:UIGraphicsGetCurrentContext()]

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

于 2014-10-01T10:57:36.023 回答