【发布时间】:2017-02-01 22:36:29
【问题描述】:
我正在展示一个包含 UIVisualEffectView 的 UIViewController,如下所示:
-(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 中,当视图控制器出现时,它看起来像是一个 2 步动画,而在 iOS 9 中,模糊是立即应用的。
一张图片值一千字,所以我上传了一段视频来展示这种奇怪的行为:
UIVisualEffectView iOS 9 vs iOS 10
我的问题是:如何在 iOS 10 中像在 iOS 9 中一样呈现视图控制器?
【问题讨论】:
标签: ios objective-c ios10 xcode8 uivisualeffectview