Z jakiegoś niewiadomego powodu wydaje się, że istnieje potencjalny błąd we wszystkich metodach zrzutu ekranu na symulatorze iPhone'a (i urządzeniu). Ilekroć wywołać dowolną z metod screenshot tym:Metody snapshotów złamane na urządzeniu i symulatorze iPhone 6
snapshotViewAfterScreenUpdates: resizableSnapshotViewFromRect: drawViewHierarchyInRect:
z afterScreenUpdates ustawiona na wartość Tak, ekran migocze. Jeśli ustawione na NIE, to nie pojawia się migotanie, ale nie mogę uzyskać potrzebnej funkcjonalności.
Te metody działają dobrze zarówno w wersji iOS7.1, jak i iOS8 we wszystkich innych symulatorach, z wyjątkiem iPhone'a 6 i 6+.
Co dziwne, jeśli zacznę nowy projekt przy użyciu storyboardów i wypróbuję podobny kod, nie mogę odtworzyć migotania. Mam załączeniu gif migotania przy użyciu mojego non-storyboard projekt:
A tutaj jest bardzo prosty kontroler widok:
@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
A oto moja AppDelegate na wszelki wypadek:
- (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;
}
Każda pomoc będzie bardzo ceniona!