React Native 中的全屏图像

Posted

技术标签:

【中文标题】React Native 中的全屏图像【英文标题】:Full screen image in React Native 【发布时间】:2015-03-30 15:04:01 【问题描述】:

如何在 React Native 中让 <Image> 填充整个 UIWindow 大小的区域?如果我使用自动布局,我会在每个边缘设置一个约束,但通量是非常不同的范例,我不是网络人。如果没有在我的 <Image> 上设置手动宽度/高度,什么都不会显示,但是我如何动态地告诉样式与其父元素的宽度和高度相同,或者至少是窗口?

【问题讨论】:

【参考方案1】:

您需要使用flexbox。这是一个完整的例子:

'use strict';

var React = require('react-native');

var 
  AppRegistry,
  StyleSheet,
  View,
  Image
 = React;

var TestCmp = React.createClass(
  render: function() 
    return (
      <View style=styles.imageContainer>
        <Image style=styles.image source=uri: 'http://lorempixel.com/200/400/sports/5/' />
      </View>
    );
  
);

var styles = StyleSheet.create(
  imageContainer: 
    flex: 1,
    alignItems: 'stretch'
  ,
  image: 
    flex: 1
  
);

AppRegistry.registerComponent('RCTTest', () => TestCmp);

请注意,您需要一个容器来允许您在其中定义项目的 flex。这里的关键是alignItems: 'stretch',让imageContainer的内容填满可用空间。

【讨论】:

完美。这几乎就是我所拥有的,只是我使用的是"center" 而不是"stretch"。很多这样的小事,我得弄清楚。谢谢! 是的,我猜你必须设置一个像素宽度才能让它以“中心”出现。请记住,React Native 中的 flexbox 是 flexbox 规范的实现,因此您应该能够使用文档和指南来帮助您掌握它。这是一个好的开始:developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes 这似乎对我不起作用,我正在使用列表视图来显示图像,列表视图可能会导致此问题吗? 可能。就像我在回答中所说的那样,包含样式也有效果。可能值得提出一个新问题,因为它听起来略有不同,但我唯一要说的是,从技术上讲,这可能比 React Native 更像是一个 flexbox 问题。 有没有办法让图像“适合”全屏?仅当我指定图像的宽度和高度时,这似乎才有效。如果图像大于屏幕,那么你会得到一个居中的剪辑版本,我宁愿让它适合屏幕。我试图看看这是否可以手动进行,但我看不到如何获得可用的屏幕尺寸(或父视图尺寸)以便能够手动调整图像的大小。【参考方案2】:

如果支持 androidios,您可以使用此代码, 你需要隐藏工具栏和状态栏

隐藏状态栏

return (
        <View style=styles.root_layout>
            <StatusBar hidden=true />
            ...
        </View>
    )

工具栏隐藏

static navigationOptions = 
    header: null

【讨论】:

以上是关于React Native 中的全屏图像的主要内容,如果未能解决你的问题,请参考以下文章

React Native Modal Selector中的全屏显示

react-native modal 不占用设备的全屏

如何在 React Native youtube iframe 中切换到全屏(单击 YouTube 播放器 gui 上的全屏按钮旋转到横向)?

react native android背景图像不适合屏幕

React-Native 图像查看器?

React-Native 图像高度(全宽)