【问题标题】:Issue rendering local static image in iOS only (React Native)仅在 iOS 中渲染本地静态图像(React Native)
【发布时间】:2020-08-10 06:07:25
【问题描述】:

我是编码和本机反应的新手,如果这是一个愚蠢的问题,我很抱歉。

我在从以下代码呈现汉堡包图标时遇到问题。它可以在 Android 上按预期运行,但在 iOS 上不行。

import React from 'react';
import { StyleSheet, Text, View, TouchableOpacity, Image } from 'react-native';
import { totalPoints, totalBucks } from '../datasets/UserData.js';

export class Navbar extends React.Component {
    constructor(props){
        super(props);
    }

    burgerPress = value => {
        this.props.onPress();
       }

render(){
var points = totalPoints;
var bucks = totalBucks;

    return(
        <View style={styles.row}>
            <Text style={styles.column} />
            <Text style={styles.column}>
                <Image source={require('../../assets/coins.png')}  style={{ width: 30, height: 30, resizeMode: 'contain'}}/> 
                 {"  "}{ points }
            </Text> 
            <Text style={styles.column}>
                <Image source={require('../../assets/bills.png')}   style={{ width: 40, height: 40, resizeMode: 'contain'}}/> 
                {"  "}{ bucks }
            </Text>
            <View style={styles.column}>
            <TouchableOpacity onPress={() => this.burgerPress()} style={{width: 40, height: 40, justifyContent: 'center', alignItems: 'center'}}>
                <Image source={require('../../assets/hamburger.png')} resizeMode={'contain'} style={{ width: 40, height: 40, backgroundColor: 'lightblue', tintColor: '#ffffff',  justifyContent: 'center', alignItems: 'center'}}/> 
            </TouchableOpacity>
            </View>
        </View>
        );
};
};

const styles={
    row: {
        flex: 1,
        alignItems: 'flex-end',
        flexDirection: 'row',
        borderBottomWidth: 1,
        borderColor: "#000000",
        padding: 5,
        justifyContent: 'center'
    },
    column: {
        flex: 1,
        alignItems: 'center',
        flexDirection: 'column',
        justifyContent: 'center'
    }
}

硬币和纸币图标可以在两个平台上正确加载。汉堡包在 android 上加载,但在 iOS 上,我得到的只是背景颜色。如果我删除了 backgroundColor 和 tintColor,它什么也不会渲染,所以我认为问题在于它根本没有导入图像,而只是在 iOS 上。有什么办法可以让它工作吗?

iOS display(意外)

Android display(预期)

【问题讨论】:

    标签: ios image react-native


    【解决方案1】:

    我看不到您的styles.column 被指定为什么,但作为测试,我也会给您的TouchableOpacity 一个宽度和高度。然后尝试设置justifyContent: centeralignItems: center 以确保图像没有因某种原因被隐藏。

    您可能还需要在 Image 中指定 resizeMode={'contain'} 属性,而不仅仅是在您的图像样式中声明它。

    【讨论】:

    • 感谢您的回复!我更新了上面的代码以显示样式和建议的编辑。它仍然显示同样的问题....适用于 Android,而不是 iOS
    • 非常有趣...我只是将您的代码复制并粘贴到我的一个屏幕组件中,它完美地显示出来。你能从上到下显示你的整个组件吗?你也是使用香草RN还是使用Expo。
    • 整个组件现在都在上面的编辑中。我正在使用 Expo 在我的 android 手机、iPad、浏览器和 iOS 模拟器上进行渲染。它适用于浏览器和我的 Android 手机,但不适用于 iPad 或 iOS 模拟器。
    • 我通过使用较小的 png 图标文件让它工作,所以它一定与调整大小有关。它在 Android 中调整了大小,但在 iOS 中没有。绝对是一个奇怪的问题,但很高兴它已解决。感谢您的帮助!
    猜你喜欢
    • 2018-03-02
    • 2015-11-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多