je présente une UIViewController qui contient un UIVisualEffectView comme suit:UIVisualEffectView dans iOS 10
-(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;
}
}
Comme vous pouvez le voir, j'utilise le UIModalPresentationStyleOverFullScreen de sorte que lorsque le contrôleur de vue avec le flou apparaît, le flou sera être «appliqué» au contenu du contrôleur de vue qui le présente; la segue a un style de transition Cross-Dissolve.
L'effet est normal. Cependant, dans iOS 9, la présentation est plus fluide que dans iOS 10. Dans iOS 10, lorsque le contrôleur de vue apparaît, cela ressemble à une animation en deux étapes, tandis que dans iOS 9, le flou est appliqué immédiatement.
Une image vaut mille mots, donc j'uploadé une vidéo montrant ce comportement étrange:
UIVisualEffectView iOS 9 vs iOS 10
Ma question est: Comment puis-je présenter le contrôleur de vue dans iOS 10 comme il est présenté dans iOS 9?
Impressionnant! Fonctionne très bien. J'ai utilisé le même projet que j'ai utilisé pour la vidéo que j'ai posté et je l'ai téléchargé sur GitHub avec votre solution. Je vous remercie. > https://github.com/Axort/BlurTest-iOS10 – Axort
Je suggère d'utiliser une animation de printemps, et une durée de 0.5. C'est ce que le natif fait. –
@Axort avez-vous une version rapide de cela? – user2722667