美文网首页
iOS RCTStatusBarManager红屏警告 处理报告

iOS RCTStatusBarManager红屏警告 处理报告

作者: null_2562 | 来源:发表于2019-05-08 15:11 被阅读0次

项目在开发阶段一路东风,集成后出了问题,iOS红屏警告,如下图

RCTStatusBarManager 红屏报错

网络给出的结论是:
引用(dangxy丶)界面,侵删给出的解决方法是修改info.plist文件
在info.plist中,add row添加View controller-based status bar appearance并设置为NO即可。改个配置而已,分分钟的事

放心,不可能放心的,这辈子都不可能放心的,程序员就是要做修修改改的事

重点来了,由于要修改原生配置,我们经理不允许

无奈我们只能找出 引用RCTStatusBarManager的地方,屏蔽删除
看iOS源码 我们找到支撑RN的原生类RCTStatusBarManager

文件地址

为什么会红屏?

获取iOS原生配置 判断方法是否可用
现在我们有两种改法,

原生改法

修改 RCTViewControllerBasedStatusBarAppearance方法,改动如下

static BOOL RCTViewControllerBasedStatusBarAppearance()
{
  static BOOL value;
  static dispatch_once_t onceToken;
  dispatch_once(&onceToken, ^{
    value = [[[NSBundle mainBundle] objectForInfoDictionaryKey:
              @"UIViewControllerBasedStatusBarAppearance"] ?: @YES boolValue];
  });

  return false;
}

或,屏蔽RCTLogError 眼不见心不烦

RCT_EXPORT_METHOD(setStyle:(UIStatusBarStyle)statusBarStyle
                  animated:(BOOL)animated)
{
  if (RCTViewControllerBasedStatusBarAppearance()) {
    //RCTLogError(@"RCTStatusBarManager module requires that the \
                UIViewControllerBasedStatusBarAppearance key in the Info.plist is set to NO");
  } else {
    [RCTSharedApplication() setStatusBarStyle:statusBarStyle
                                     animated:animated];
  }
}

RCT_EXPORT_METHOD(setHidden:(BOOL)hidden
                  withAnimation:(UIStatusBarAnimation)animation)
{
  if (RCTViewControllerBasedStatusBarAppearance()) {
    //RCTLogError(@"RCTStatusBarManager module requires that the \
                UIViewControllerBasedStatusBarAppearance key in the Info.plist is set to NO");
  } else {
    [RCTSharedApplication() setStatusBarHidden:hidden
                                 withAnimation:animation];
  }
}

简单粗暴从此告别statusbar引起的红屏


info.plist配置都不让修改,修改RN原生源码,别闹了凶DEI

找到RN的包

从源码上看,当StatusBar调用隐藏或者style时会红屏,所以请区分对待

getStatusBarFromPlatform = () => {
    switch (Platform.OS) {
      case 'ios':
        return <View></View>
      case 'android':
        return <StatusBar backgroundColor={statusBarColor} translucent={true} barStyle={statusBarStyle} animated={animated} hidden={statusBarHidden} />
    }
  }

相关文章

  • iOS RCTStatusBarManager红屏警告 处理报告

    项目在开发阶段一路东风,集成后出了问题,iOS红屏警告,如下图 网络给出的结论是:引用(dangxy丶)界面,侵删...

  • 收藏文章

    ios 处理内存警告

  • ReactNative异常处理-RedBox和YellowBox

    应用内的错误与警告提示(红屏和黄屏) 红屏或黄屏提示都只会在开发版本中显示,正式的离线包中是不会显示的。 红屏错误...

  • iOS - 警告处理

    一、 在Xcode8下兼容iOS10,我们会在控制台遇到下面这个警告错误: 解决方法: 进入Product -> ...

  • ios 开发中常见警告处理

    ios 开发中常见警告处理例如: pragma clang diagnostic pushpragma clang...

  • iOS 处理Cocoapods警告

    使用cocoapod引入的第三方,如果第三方库中有警告,可以在podfile文件中增加一句inhibit_all_...

  • iOS 项目警告处理

    去除警告的方法: 上述的代码块中,正常的代码是没有下方这些代码的。但是呢,这个方法我是已经写了,但是在项目中没有运...

  • iOS内存警告处理

    只要出现内存警告的时候,会第一时间执行 AppDelegate 的 - (void)applicationDidR...

  • iOS didReceiveMemoryWarning 的方法理

    参考文档:27.iOS内存警告处理(didReceiveMemoryWarning) 总结: (1)当应用可用内存...

  • iOS编译警告

    iOS编译警告-消除方法参数检查相关的警告 iOS编译警告-消除注释中的警告

网友评论

      本文标题:iOS RCTStatusBarManager红屏警告 处理报告

      本文链接:https://www.haomeiwen.com/subject/htfmoqtx.html