美文网首页
<<React Native系列>> S

<<React Native系列>> S

作者: MrLuo | 来源:发表于2017-08-01 14:53 被阅读603次

    React Native出来这么久了,一直观望,但也没好好了解,这阵子抽点时间好好学习下吧。。。

    一、StatusBar组件介绍

    StatusBar 是 React Native 0.20 起新增的跨平台组件,它可以用来设置并动态改变设备的状态栏显示特性。
    StatusBar 组件可以同时加载多个 StatusBar 组件,这些 StatusBar 组件的属性可以按照加载的顺序进行合并。一种常见的用法就是:我们可以在使用 Navitator 的时候,针对不同的路由页面设置特殊的状态栏样式。
    虽然 StatusBar 是跨平台组件,但其中有些属性是通用的,而有些则是 iOS 或 Android 独有的。所以我们开发时要做好适配。

    StatusBar控制的区域.png

    官方写法

    <View>
       <StatusBar
         backgroundColor="blue"
         barStyle="light-content"
       />
       <Navigator
         initialRoute={{statusBarHidden: true}}
         renderScene={(route, navigator) =>
           <View>
             <StatusBar hidden={route.statusBarHidden} />
             ...
           </View>
         }
       />
     </View>
    
    二、通用属性介绍

    1,animated
    (1)设置当状态栏的状态发生变化时,是否需要加入动画。(2)动画支持 backgroundColor、barStyle 和 hidden 属性的变化。

    2,hidden
    设置状态栏是否隐藏。

    import React, {Component} from 'react';
    import {
        AppRegistry,
        StyleSheet,
        Text,
        View,
        StatusBar
    } from 'react-native';
     
    //默认应用的容器组件
    class App extends Component {
        //渲染
        render() {
            return (
                <View style={styles.container}>
                  <StatusBar hidden={true} />
                </View>
            );
        }
    }
     
    //样式定义
    const styles = StyleSheet.create({
        container: {
            flex: 1,
            backgroundColor:'#1FB9FF'
        },
    });
     
    AppRegistry.registerComponent('HelloWorld', () => App);
    
    三、仅支持iOS的属性

    1,barStyle
    用于设置状态栏文字的颜色,其值是枚举类型:
    default:黑色文字(默认)
    light-content:白色文字

    2,networkActivityIndicatorVisible
    设定网络活动指示器(就是那个菊花)是否显示在状态栏。
    <StatusBar networkActivityIndicatorVisible={true} />

    3,showHideTransition
    通过 hidden 属性来显示或隐藏状态栏时所使用的动画效果,有两种选择:fade(默认值)、slide

    四、仅支持Android的属性

    1,backgroundColor
    Android 设备上状态栏的背景颜色
    1
    <StatusBar backgroundColor={'blue'} />

    2,translucent
    设置状态栏是否为透明。
    当状态栏的值为 true 的时候,应用将会在状态栏下面进行绘制显示。这样在 Android 平台上面就是沉浸式的效果,可以达到 Android 和 iOS 应用显示效果的一致性。
    该值常常同配置半透明效果的状态栏颜色一起使用。
    <StatusBar translucent={true} />

    3,StatusBar.currentHeight
    React Native 在 Android 平台为 StatusBar 组件提供了一个静态常量 currentHeight,我们可以通过读取这个常量来得到 Android 手机状态栏的高度。
    注意:currentHeight 不是一个属性,我们直接访问 StatusBar.currentHeight 就可以了。

    五、不同平台下状态栏的处理

    1,Android 手机状态栏
    (1)当状态栏呈现在 Andorid 手机屏幕顶部时,它会占用顶部这个空间,我们只能使用剩下的屏幕空间。也就是说如果从第 0 行开始放置组件时,组件会紧贴着状态栏的下边沿显示。
    (2)要想知道实际可用的屏幕高度,可以通过手机屏幕的高度减去状态栏高度得到。

    2,iOS 手机状态栏
    (1)在 iOS 平台上,取得的屏幕高度就是实际可使用的高度。
    (2)如果从第 0 行开始排列组件时,组件会紧贴着手机屏幕的最上沿显示。如果状态栏没有被隐藏,它将覆盖在第 0 行组件的上方。
    (3)如果不想设置状态栏隐藏,则应当空出状态栏的显示区域。但可以为这个区域设置背景色,以使整个界面风格统一。

    相关文章

      网友评论

          本文标题:<<React Native系列>> S

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