Я представляю 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, так что, когда появляется контроллер вида с размытием, размытие будет "применено" к содержимому контроллера представления, который его представляет; segue имеет стиль перехода Cross Dissolve.
Эффект выглядит так, как ожидалось. Однако в iOS 9 презентация более плавная, чем в iOS 10. В iOS 10, когда появляется контроллер представления, кажется, что это двухэтапная анимация, в то время как в iOS 9 размытие применяется немедленно.
Изображение стоит тысячи слов, поэтому я загрузил видео, показывающее это странное поведение:
UIVisualEffectView iOS 9 vs iOS 10
Мой вопрос: как я могу представить контроллер представления в iOS 10, поскольку он представлен в iOS 9?