由于某种未知的原因,iPhone 6 模拟器(和设备)上的所有屏幕截图方法似乎都可能存在错误。每当我调用任何屏幕截图方法时,包括:
屏幕更新后的快照视图:
可调整大小的SnapshotViewFromRect:
绘制ViewHierarchyInRect:
afterScreenUpdates 设置为 YES 时,屏幕会闪烁。如果设置为“否”,则不会发生闪烁,但我无法获得我需要的功能。
这些方法在除 iPhone 6 和 6+ 之外的所有其他模拟器中都适用于 iOS7.1 和 iOS8。
奇怪的是,如果我使用故事板开始一个全新的项目并尝试类似的代码,我无法重现闪烁。我使用我的非故事板项目附上了闪烁的 gif:
这是非常简单的视图控制器:
@implementation TestSnapshotController
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Snap" style:UIBarButtonItemStylePlain target:self action:@selector(_snap)];
self.blueView = [UIView new];
self.blueView.backgroundColor = [UIColor blueColor];
self.blueView.frame = CGRectMake(100.0f, 100.0f, 100.0f, 100.0f);
[self.view addSubview:self.blueView];
}
- (void)_snap
{
[self.blueView snapshotViewAfterScreenUpdates:YES];
}
@end
这是我的 AppDelegate 以防万一:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
TestSnapshotController *testVC = [TestSnapshotController new];
UINavigationController *rootNavVC = [[UINavigationController alloc] initWithRootViewController:testVC];
self.window.rootViewController = rootNavVC;
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}
任何帮助将不胜感激!
运行以下代码时,我们遇到了同样的问题:
[window drawViewHierarchyInRect:window.bounds afterScreenUpdates:YES];
到目前为止,我们找到的唯一解决方案是确保应用程序启动的图像大小适合 iPhone 6 和 6+,然后我们就不会再出现闪烁。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)