J'ai mis à niveau mon appareil iPhone vers iOS 14 bêta et Xcode 12 bêta. Ensuite, toutes les images / images rapides de mon projet React Native ne peuvent pas s'afficher (qui fonctionnent bien sur les précédents iOS 13 et Xcode 11.5).
7 Réponses :
Ceci est lié à https://github.com/SDWebImage/SDWebImage/issues/3040 .
SDWebImage
simplement à jour SDWebImage
dans votre Podfile
ou supprimez Podfile.lock
et réinstallez-le.
Essayez d'utiliser react-native+0.63.0.patch
comme suggéré ici https://github.com/facebook/react-native/issues/29279#issuecomment-657201709
diff --git a/node_modules/react-native/Libraries/Image/RCTUIImageViewAnimated.m b/node_modules/react-native/Libraries/Image/RCTUIImageViewAnimated.m index 21f1a06..2444713 100644 --- a/node_modules/react-native/Libraries/Image/RCTUIImageViewAnimated.m +++ b/node_modules/react-native/Libraries/Image/RCTUIImageViewAnimated.m @@ -272,6 +272,9 @@ - (void)displayDidRefresh:(CADisplayLink *)displayLink - (void)displayLayer:(CALayer *)layer { + if (!_currentFrame) { + _currentFrame = self.image; + } if (_currentFrame) { layer.contentsScale = self.animatedImageScale; layer.contents = (__bridge id)_currentFrame.CGImage; diff --git a/node_modules/react-native/scripts/.packager.env b/node_modules/react-native/scripts/.packager.env new file mode 100644 index 0000000..361f5fb --- /dev/null +++ b/node_modules/react-native/scripts/.packager.env @@ -0,0 +1 @@ +export RCT_METRO_PORT=8081
Pour utiliser le patch
exécuter npm i -g patch-package
Créez un nouveau dossier appelé patches
Créez un nouveau fichier appelé react-native + 0.63.0.patch dans ce dossier
Ajoutez le code source ci-dessus
exécuter patch-package
à la racine du projet
Mettre à jour vers React Native 0.63.2. Corrigé dans https://github.com/facebook/react-native/commit/b6ded7261544c703e82e8dbfa442dad4b201d428
si vous n'exécutez pas la dernière version de react-native (> 0.63.2) ou si vous ne prévoyez pas de mettre à niveau vers la dernière version de react-native. Ensuite, vous pouvez être votre correctif temporaire, essayez de changer node_modules comme ci-dessous
Ceci est un problème avec react-native <= 0.63.1 et iOS 14
Ce problème est résolu et fusionné pour réagir à la dernière version native. Mais si vous souhaitez corriger votre projet maintenant ou si vous utilisez des versions inférieures à 0.63.2, il existe une solution. (Merci à https://bityl.co/3ksz )
PREMIÈRE SOLUTION: si vous pouvez mettre à jour React Native
Mettre à jour react-native vers la v0.63.2 ou supérieure
Son a été corrigé dans cette version: https://github.com/react-native-community/releases/blob/master/CHANGELOG.md#v0632
DEUXIÈME SOLUTION: si vous ne pouvez pas mettre à jour React Native
node_modules / react-native / Libraries / Image / RCTUIImageViewAnimated.m
De
"scripts": { ... "postinstall": "patch-package", }À
#pragma mark - CALayerDelegate - (void)displayLayer:(CALayer *)layer { if (_currentFrame) { layer.contentsScale = self.animatedImageScale; layer.contents = (__bridge id)_currentFrame.CGImage; } else { [super displayLayer:layer]; } }
npx patch-package react-native
git add patches/*
package.json
#pragma mark - CALayerDelegate - (void)displayLayer:(CALayer *)layer { if (_currentFrame) { layer.contentsScale = self.animatedImageScale; layer.contents = (__bridge id)_currentFrame.CGImage; } }
Il mettra à jour tous les fichiers de correctifs chaque fois que vous installez des packages.
Hmmm. Je ne vois pas ce fichier dans mon dossier node_modules. 0.59.10 ici.
N'oubliez pas d'installer la bibliothèque patch-package
J'utilise React Native v0.60.6 avec React Native Fast Image v8.1.5.
La mise à niveau de SDWebImage avec la pod update SDWebImage
fonctionné pour moi.
Plus précisément, je suis passé de SDWebImage v5.8.1 à v5.9.2.
Les versions de Xcode 12 semblent avoir un problème, pour résoudre le problème, je vais à
node_modules> react-native> Bibliothèques> Images> RCTUIImageViewAnimated.m
Et recherchez if (_currentFrame)
ajouter le bloc else au bloc if comme indiqué ci-dessous le code
if (_currentFrame) { layer.contentsScale = self.animatedImageScale; layer.contents = (__bridge id)_currentFrame.CGImage; } else { [super displayLayer:layer]; }
Cela peut être dû au système de construction ou à un problème lors du regroupement des ressources. Mes autres applications qui fonctionnent en mode de sortie affichent toujours l'image, mais parfois l'application se bloque lorsque j'essaie d'ouvrir un écran contenant une image.
Ohh ok, je suis en train de courir sur le simulateur et aucune des images ne s'affiche.
Je ne sais pas pourquoi, mais aujourd'hui, je viens de créer à nouveau l'application et le problème est parti, LOL ...
@EmBeCoRau vous avez probablement mis à jour les
SDWebImage
et il a automatiquement mis à niveauSDWebImage