在 iOS 14 升级中未加载 react-native 图像

Art*_*Dev 7 ios cocoapods react-native

升级iOS 14版本后,React Native构建失败。将 XCode 构建设置切换为“传统构建设置”并成功构建。

但是新版本不加载图像,图像的原始部分现在是白屏

<Image
  source={require('./images/home.png')}
/>
Run Code Online (Sandbox Code Playgroud)

系统规格

Environment:
Xcode Version 12.0
Simulator: IPhone X - 2nd generation - 14.0
"react": "16.11.0",
"react-native": "0.62.2"
Run Code Online (Sandbox Code Playgroud)

Cam*_*CHN 14

这是 react-native <= 0.63.1 和 iOS 14 的问题

此问题已修复并合并以响应本机最新版本。但是如果你现在想修复你的项目或者你正在使用 0.63.2 版本以下,有一个解决方案。(感谢https://bityl.co/3ksz)

第一个解决方案:如果您可以更新 React Native

将 react-native 更新到 v0.63.2 或更高版本

它已在此版本中修复:https : //github.com/react-native-community/releases/blob/master/CHANGELOG.md#v0632

第二种解决方案:如果您无法更新 React Native

  1. 从以下位置打开文件:

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

  1. 编辑源

从

#pragma mark - CALayerDelegate

- (void)displayLayer:(CALayer *)layer
{
  if (_currentFrame) {
    layer.contentsScale = self.animatedImageScale;
    layer.contents = (__bridge id)_currentFrame.CGImage;
  }
}
Run Code Online (Sandbox Code Playgroud)

到

#pragma mark - CALayerDelegate

- (void)displayLayer:(CALayer *)layer
{
  if (_currentFrame) {
    layer.contentsScale = self.animatedImageScale;
    layer.contents = (__bridge id)_currentFrame.CGImage;
  } else {
    [super displayLayer:layer];
  }
}
Run Code Online (Sandbox Code Playgroud)
  1. 打补丁

npx patch-package react-native

  1. 为 Git 跟踪补丁文件

git add patches/*

  1. 为自动应用补丁添加包脚本

包.json

"scripts": {
  ...
  "postinstall": "patch-package",
}
Run Code Online (Sandbox Code Playgroud)

每当您安装软件包时,它都会从所有补丁文件中打补丁。