zoukankan      html  css  js  c++  java
  • ReactNative: 使用选择器组件PickerIOS组件

    一、简介

    接上篇文章,继续研究PickerIOS组件,这个组件是RN中专门针对iOS平台封装的。它的用法与Picker组件相同,都是要配置子项一起使用。它的子项组件PickerIOS.Item组件。当然,PickerIOS组件与Picker组件还有一个区别就是PickerIOS组件支持对文本样式的一个设置,也即TextStylePropTypes。现在来看看的属性吧。

    二、PickerIOS组件API

    PickerIOS组件提供的属性如下:

    //对每一个子项组件的样式设置,其类型最终是TextStylePropTypes
    itemStyle: itemStylePropType
    
    //切换子项组件时的回调
    onValueChange: React.PropTypes.func
    
    //默认选中的值
    selectedValue: React.PropTypes.any

    TextStylePropTypes属性比较多,如下所示:

      color: ColorPropType,
      fontFamily: ReactPropTypes.string,
      fontSize: ReactPropTypes.number,
      fontStyle: ReactPropTypes.oneOf(['normal', 'italic']),
      /**
       * Specifies font weight. The values 'normal' and 'bold' are supported for
       * most fonts. Not all fonts have a variant for each of the numeric values,
       * in that case the closest one is chosen.
       */
      fontWeight: ReactPropTypes.oneOf(
        ['normal' /*default*/, 'bold',
         '100', '200', '300', '400', '500', '600', '700', '800', '900']
      ),
      /**
       * @platform ios
       */
      fontVariant: ReactPropTypes.arrayOf(
        ReactPropTypes.oneOf([
          'small-caps',
          'oldstyle-nums',
          'lining-nums',
          'tabular-nums',
          'proportional-nums',
        ])
      ),
      textShadowOffset: ReactPropTypes.shape(
        { ReactPropTypes.number, height: ReactPropTypes.number}
      ),
      textShadowRadius: ReactPropTypes.number,
      textShadowColor: ColorPropType,
      /**
       * @platform ios
       */
      letterSpacing: ReactPropTypes.number,
      lineHeight: ReactPropTypes.number,
      /**
       * Specifies text alignment. The value 'justify' is only supported on iOS and
       * fallbacks to `left` on Android.
       */
      textAlign: ReactPropTypes.oneOf(
        ['auto' /*default*/, 'left', 'right', 'center', 'justify']
      ),
      /**
       * @platform android
       */
      textAlignVertical: ReactPropTypes.oneOf(
        ['auto' /*default*/, 'top', 'bottom', 'center']
      ),
      /**
       * Set to `false` to remove extra font padding intended to make space for certain ascenders / descenders.
       * With some fonts, this padding can make text look slightly misaligned when centered vertically.
       * For best results also set `textAlignVertical` to `center`. Default is true.
       * @platform android
       */
      includeFontPadding: ReactPropTypes.bool,
      textDecorationLine: ReactPropTypes.oneOf(
        ['none' /*default*/, 'underline', 'line-through', 'underline line-through']
      ),
      /**
       * @platform ios
       */
      textDecorationStyle: ReactPropTypes.oneOf(
        ['solid' /*default*/, 'double', 'dotted','dashed']
      ),
      /**
       * @platform ios
       */
      textDecorationColor: ColorPropType,
      /**
       * @platform ios
       */
      writingDirection: ReactPropTypes.oneOf(
        ['auto' /*default*/, 'ltr', 'rtl']
      ),
    View Code

    三、PickerIOS.Item组件API

    PickerIOS.Item组件提供的属性如下:

    //
    value: React.PropTypes.any, // string or integer basically
    
    //文本
    label: React.PropTypes.string,
    
    //文本颜色
    color: React.PropTypes.string,

    四、使用

    好了。不废话了,上代码,示例如下:

    /**
     * Sample React Native App
     * https://github.com/facebook/react-native
     * @flow
     */
    
    import React, { Component } from 'react';
    
    import {
        AppRegistry,
        StyleSheet,
        View,
        PickerIOS
    } from 'react-native';
    
    
    export default class ReactNativeDemo extends Component {
    
        //默认选中的值
        state = {
            language:'swift'
        };
    
        render() {
            return (
                <View style={[styles.flex,styles.bgColor,styles.center]}>
                    <PickerIOS
                        style={{200, height:50}}
                        selectedValue={this.state.language}
                        onValueChange={(lang) => this.setState({language: lang})}
                        itemStyle={{fontSize:30,fontWeight:"200",fontStyle:'italic'}}>
                        <PickerIOS.Item label="Java" value="java" color='red' />
                        <PickerIOS.Item label="JavaScript" value="js"  color='red' />
                        <PickerIOS.Item label="Swift" value="swift"  color='red' />
                        <PickerIOS.Item label="Objective-C" value="oc"  color='red' />
                    </PickerIOS>
                </View>
            );
        }
    }
    
    const styles = StyleSheet.create({
        flex: {
            flex: 1
        },
        bgColor: {
          backgroundColor: 'white'
        },
        center: {
            alignItems: 'center',
            justifyContent: 'center',
        }
    });
    
    AppRegistry.registerComponent('ReactNativeDemo', () => ReactNativeDemo);

  • 相关阅读:
    gitlab: git clone/pull / push: The project you were looking for could not be found
    转载: MySQL启动出错InnoDB: Check that you do not already have another mysqld process解决方法
    root用户删除文件,提示:Operation not permitted
    使用dockerfile打包新镜像
    kubernets创建Deployment
    代理全家福
    Spring事务传播详解
    [FFmpeg]Centos7 yum安装
    [Redis]存放字典
    [Docker]开放2375端口
  • 原文地址:https://www.cnblogs.com/XYQ-208910/p/12146221.html
Copyright © 2011-2022 走看看