React nativeweb前端开发

2019-05-31 React Native 的沉浸式状态栏

2019-05-31  本文已影响6人  KingAmo

默认情况下,如果不对状态栏进行处理,App的状态栏在Android和iOS下的表现不一样:

react native 提供了一个组件StatusBar来控制状态栏,其中以下属性很重要:

为了适配iOS的刘海屏,我们一般会用react-navigationSafeAreaView 来包裹我们的视图,默认情况下forceInset={{top: 'always', bottom: 'always'}},就强制让子组件在安全区域内显示了。这就造成一个问题,在iOS上,就无法做到沉浸式状态栏了, 危险区域(状态栏等)的背景颜色就是SafeAreaView的背景颜色。

而Android上的刘海屏,SafeAreaView 就没作用了。

综上,要在Android 和 iOS 中都使用沉浸式状态栏,并且还需要 SafeAreaView (iOS端底部需要),配置如下:
forceInset={{top: 'never', bottom: 'always'}}, 这样iOS端就可以是沉浸式状态栏了。
导航栏需要自定义,因为是沉浸式状态栏,导航栏要侵入状态栏,导航栏高度不再是44,而是44+状态栏高度,获取当前手机的状态栏高度: StatusBar.currentHeight (就是RN官方提供的StatusBar)。

上一篇 下一篇

猜你喜欢

热点阅读