Aus einem unbekannten Grund scheint es einen möglichen Fehler mit allen Screenshot-Methoden auf dem iPhone 6 Simulator (und Gerät) zu geben. Immer, wenn ich einen der Bildschirm Methoden aufrufen, einschließlich:Snapshot Methoden auf iPhone 6 Gerät und Simulator
snapshotViewAfterScreenUpdates: resizableSnapshotViewFromRect: drawViewHierarchyInRect:
mit afterScreenUpdates auf JA gesetzt, flackert der Bildschirm. Wenn NEIN eingestellt ist, tritt kein Flimmern auf, aber ich kann die benötigte Funktionalität nicht finden.
Diese Methoden funktionieren gut mit iOS7.1 und iOS8 in allen anderen Simulatoren außer für iPhone 6 und 6+.
Seltsamerweise, wenn ich ein brandneues Projekt mit Storyboards starte und einen ähnlichen Code versuche, kann ich das Flimmern nicht reproduzieren. Ich habe ein gif des Flimmerns angebracht mein Nicht-Storyboard-Projekt mit:
Und hier ist der sehr einfache View-Controller:
@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
Und hier ist mein AppDelegate für alle Fälle:
- (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;
}
Jede Hilfe würde sehr geschätzt werden!