Utiliser PDF comme image en Xcode 9 / iOS11
Joanna Carter
Membre, Modérateur
Quelqu'un a trouver comment jouer avec un UIImageView dont l'image est en PDF ?
Si je mets les contraintes en haut, sur les deux côtés et je fixe l'hauteur, tout va bien ; l'image est bien nette.
Autrement, si je centre l'image sur les contraintes centre vertical et centre horizontal avec une hauteur fixe et un aspect de 1:1, l'image est floue.
Bogue ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
À quoi as-tu réglé l'aspect fit ?
Sur iOS, il est possible que les .pdf soient rastérisés AVANT l'affichage, contrairement à macOS.
Du coup Joanna tu as trouvé la solution à ton problème ?
Non >:(
Puis, tout d'un coup, je l'ai trouvé !!!
Grace à https://spin.atomicobject.com/2015/06/03/ios-square-view-auto-layout/plus mes propres modifications.
Au moins, ça va sur tous les simulateurs pour les iPhones n+ et les iPads, mais pas sur les iPhones "normaux".
Voici les résultats, fait avec un seul fichier pdf pour le tabBar icône et l'image :
Ouf, finalement elle est bien humaine, avec ses défauts et ses échecs.
Bah non finalement elle n'est vraiment pas humaine .. Ou elle a vendue son âme au diable !
C'est quoi que tu appelles les iPhone "normaux" ?
Ceux qui n'ont pas de " + " dans le nom.
Je suppose que le PDF est rendu dans la CALayer de l'ImageView lors de l'affichage initial. Tu dois pouvoir le tester en mettant un point d'arrêt sur UIImageView.drawRect().
Par la suite, si les dimensions de l'imageView changent, la CALayer est simplement étirée, son contenu n'est pas recalculé. Tu peux changer ce comportement en utilisant la propriété UIView.contentMode = .redraw. Attention, l'impact sur les performances est significatif, on s'en rend bien compte lors des rotations.
Evidemment, si l'imageView conserve ses dimensions, il n'y a plus de problème. J'ai l'impression que c'est la solution que tu as adoptée.
Si je comprends bien Céroce il vaut mieux des le départ avoir bien en tête les dimensions de ton image et créer une UIImageView en conséquence plutôt que de laisser les auto layout dimensionner l'image correctement ?
J'ai changé le contentMode = .redraw dans IB mais aucune différence
Sur l'iPhone 8 :
Même si tu dis que c'est une image unique pour tous les formats ?
D'après ce que je pensais comprendre, en iOS 11, les pdfs sont désormais utilisés sans conversion ?
J'ai ajouté le pdf dans l'Assets et la réglé comme ci :
Enfin !!! Le truc, c'est de ne pas définir l'image dans IB mais de la mettre dans l'imageView dans viewDidLoad()
Du coup, je peux utiliser les contraintes minimales que j'ai prévu avant d'experimenter avec les pdfs
Merci Ceroce, ça fonctionne bien dans tous les bidules