Я представляю UIViewController, который содержит UIVisualEffectView следующим образом:
-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {
[self performSegueWithIdentifier:@"segueBlur" sender:nil];
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if([segue.identifier isEqualToString:@"segueBlur"]) {
((UIViewController *)segue.destinationViewController).providesPresentationContextTransitionStyle = YES;
((UIViewController *)segue.destinationViewController).definesPresentationContext = YES;
((UIViewController *)segue.destinationViewController).modalPresentationStyle = UIModalPresentationOverFullScreen;
}
}
Как видите, я использую UIModalPresentationStyleOverFullScreen, чтобы при появлении контроллера представления с размытием размытие «применялось» к содержимому контроллера представления, который его представляет; переход имеет стиль перехода Cross Dissolve.
Эффект выглядит ожидаемым. Однако в iOS 9 представление более плавное, чем в iOS 10. В iOS 10, когда появляется контроллер представления, это выглядит как двухэтапная анимация, тогда как в iOS 9 размытие применяется немедленно.
Картинка стоит тысячи слов, поэтому я загрузил видео, демонстрирующее это странное поведение:
UIVisualEffectView iOS 9 против iOS 10
Мой вопрос: как представить контроллер представления в iOS 10 так, как он представлен в iOS 9?