18
votes

Toutes les images / images rapides dans l'application React Native ne fonctionnent pas sur iOS 14 beta et Xcode 12 beta

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).


4 commentaires

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 à niveau SDWebImage


7 Réponses :


0
votes

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.


0 commentaires

2
votes

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


0 commentaires

2
votes

0 commentaires

1
votes

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

Correctif Xcode 12 pour IOS


0 commentaires

16
votes

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

  1. OUVREZ LE FICHIER DE:

node_modules / react-native / Libraries / Image / RCTUIImageViewAnimated.m

  1. MODIFIER LA SOURCE

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];
  }
}
  1. FAIRE UN PATCH

npx patch-package react-native

  1. FAIRE DES FICHIERS DE PATCH SUIVIS POUR GIT

git add patches/*

  1. AJOUTER UN SCRIPT DE PACKAGE POUR UNE APPLICATION AUTOMATIQUE DES PATCHS

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.


2 commentaires

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



0
votes

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.


0 commentaires

0
votes

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];
  }


0 commentaires