美文网首页
Ios中,react-native的导航栏被原生导航栏覆盖的问题

Ios中,react-native的导航栏被原生导航栏覆盖的问题

作者: 康闹闹2013 | 来源:发表于2019-05-24 13:22 被阅读0次

    先上两个图:

    这是一个RN页面,出现问题:RN页面的导航栏上被覆盖了,最后通过查看xcode的hierarchy发现,是被原生的UINavaigationBar是遮住了,红色是RN的导航栏。

    项目背景:

    出现这个问题的原因是,由于有个功能是纯原生实现的,代码中有RN页面到原生的跳转,因此在AppDelegate.m中增加了一个原生的UINavigationController,并且navigationBarHidden = NO; 这么做导致的结果是,包括RN在内的所有页面都将展示一个空白的UINavigationBar。解决该问题有以下几个方法:

    1、在AppDelegate中设置navigationBarHidden = Yes;进入原生页面ViewWillAppear中设置navigationBarHidden = NO;退出原生页面时,ViewWillDisappear中设置navigationBarHidden = YES;

    如果还有下一级原生页面,这个时候可以在dealloc里边设置navigationBarHidden = YES;这样原生的NavigationBar只影响原生,不影响RN页面

    2、但如果由于项目本身的某些原因,1种的方法解决不了问题,那么可以采用RN和原生通信的方式来设置双方的导航栏。

          比如本项目中需要在进入到原生页面前就设置好navigationBarHidden的属性,这个时候就不能在原生页面的ViewWillAppear中设置了;而是需要原生暴露一个方法给RN,RN在跳转原生前就调用这个方法。

    相关文章

      网友评论

          本文标题:Ios中,react-native的导航栏被原生导航栏覆盖的问题

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