使React Native Modal从上到下显示

E_Jovi

我注意到Modal组件的animationType属性仅允许其从底部滑动到顶部。如何更改动画并使模态从上到下显示?

谢谢你的时间。

纳德威尔

看起来该组件不支持这种类型的配置。

您可以做的一件事是使用Animated库来创建自己的模态。您可以将该translateY属性设置为设备高度的负值,然后将该translateY值设置为0:

openModal() {
    Animated.timing(this.state.modalY, {
        duration: 300,
        toValue: 0
     }).start();
  },

  closeModal() {
    Animated.timing(this.state.modalY, {
        duration: 300,
        toValue: -deviceHeight
     }).start();
  },

完整的实现如下:

'use strict';

var React = require('react-native');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  TouchableHighlight,
  Animated,
  Dimensions
} = React;

let deviceHeight = Dimensions.get('window').height
var deviceWidth = Dimensions.get('window').width

var SampleApp = React.createClass({

  openModal() {
    Animated.timing(this.state.modalY, {
        duration: 300,
        toValue: 0
     }).start();
  },

  closeModal() {
    Animated.timing(this.state.modalY, {
        duration: 300,
        toValue: -deviceHeight
     }).start();
  },

  getInitialState(){
    return {
        modalY: new Animated.Value(-deviceHeight)
    }
  },

  render() {
     var Modal = <Animated.View style={[ styles.modal, { transform: [                        {translateY: this.state.modalY}] }]}>
                                <TouchableHighlight onPress={ this.closeModal } underlayColor="green" style={ styles.button }>
                    <Text style={ styles.buttonText }>Close Modal</Text>
                  </TouchableHighlight>
                             </Animated.View>

    return (
      <View style={styles.container}>
       <TouchableHighlight onPress={ this.openModal } underlayColor="green" style={ styles.button }>
        <Text style={ styles.buttonText }>Show Modal</Text>
       </TouchableHighlight>
      { Modal }
      </View>
    );
  }
});

var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center'
  },
  button: {
    backgroundColor: 'green',
    alignItems: 'center',
    height: 60,
    justifyContent: 'center',
  },
  buttonText: {
    color: 'white'
  },
  modal: {
    height: deviceHeight,
    width: deviceWidth,
    position: 'absolute',
    top:0,
    left:0,
    backgroundColor: '#ededed',
    justifyContent: 'center',
  }
});

AppRegistry.registerComponent('SampleApp', () => SampleApp);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使图像从上到下连续显示

来自分类Dev

终端从上到下显示

来自分类Dev

从上到下的白色地方

来自分类Dev

CSS中从上到下的动画

来自分类Dev

从上到下的白色地方

来自分类Dev

CSS列(照片网格)从左到右而不是从上到下显示

来自分类Dev

如何使我的链接列表从上到下而不是从右到左显示?

来自分类Dev

从上到下而不是从左到右分配文本

来自分类Dev

从上到下和从左到右水平浮动元素

来自分类Dev

为什么我的图像从上到下逐行更新

来自分类Dev

如何通过jQuery将图像从上到下更改

来自分类Dev

从上到下改变旋转点的位置

来自分类Dev

Primefaces selectManyCheckbox布局在列中从上到下

来自分类Dev

矩阵从上到下的最大求和路径

来自分类Dev

使用javascript从上到下获取json数据

来自分类Dev

从特定位置从上到下开始简单的动画

来自分类Dev

$ .getJSON:javascript不能从上到下运行

来自分类Dev

jQuery / CSS从上到下填充圆圈图像

来自分类Dev

从上到下获取面板中的所有控件

来自分类Dev

单击按钮时使球从上到下掉落

来自分类Dev

自定义Segue:从上到下

来自分类Dev

动画颜色从上到下变化,反之亦然

来自分类Dev

点之间的空间和从上到下的动画

来自分类Dev

使用 jscript 级联(从上到下)div 的组织结构

来自分类Dev

从上到下的五个相关表创建 JSON

来自分类Dev

Php从上到下从json数据插入mysql

来自分类Dev

谷歌脚本从上到下删除重复项

来自分类Dev

UICollectionView(水平滚动)从左到右和从上到下

来自分类Dev

React Native 显示/隐藏视图