图标未正确加载 react-native-vector-icons
Icons not loading correctly react-native-vector-icons
我正在使用 React-Native 构建应用程序。我继续使用 FlatIcon 获取一些自定义图标,我将其上传到 IcoMoon 并按照安装步骤在 react-native
.
上正确实施它们
问题是我得到的结果与我安装的完全不同。
这是我在应用程序上获得的图标:
但我应该得到这个结果:
CustomIcon.js
import { createIconSetFromIcoMoon } from 'react-native-vector-icons';
import icoMoonConfig from './selection.json';
export default createIconSetFromIcoMoon(icoMoonConfig);
Home.js
import React, { Component } from 'react';
import { ScrollView } from 'react-native';
import CustomIcon from '../helpers/CustomIcon';
export default class Home extends React.Component {
render() {
return (
<ScrollView>
<CustomIcon name="eco-fuel" size={80} />
</ScrollView>
);
}
}
如您所见,它没有颜色,布局也大不相同。我尝试使用其他图标,但得到了相同的结果。
我找到了获得所需结果的替代方法。还是没有解决为什么react-native-vector-icons
没有显示正确图标layout/colour的问题。
我没有使用图标,而是从 IcoMoon 下载了每个 1-2kb 的 .png
,而不是每个 3-4kb 的 svg
文件。
我创建了一个CustomIcon.js
import React from 'react';
import {Image} from 'react-native'
export default CustomIcon = name => {
switch (name) {
case 'coal':
return <Image source={require('../resources/assests/icons/coal.png')} />;
case 'gas':
return <Image source={require('../resources/assests/icons/eco-fuel.png')} />;
case 'imports':
return <Image source={require('../resources/assests/icons/electric-tower.png')} />;
case 'hydro':
return <Image source={require('../resources/assests/icons/hydroelectric-power.png')} />;
case 'biomass':
return <Image source={require('../resources/assests/icons/natural-product.png')} />;
case 'nuclear':
return <Image source={require('../resources/assests/icons/nuclear-energy.png')} />;
case 'other':
return <Image source={require('../../resources/assests/icons/power-plant.png')} />;
case 'solar':
return <Image source={require('../resources/assests/icons/solar-energy.png')} />;
case 'wind':
return <Image source={require('../resources/assests/icons/wind-energy.png')} />;
default:
return 'none';
}
}
如您所见,如果您有更多图片,这将需要一些时间。
获取图像Home.js
import React, { Component } from 'react';
import { ScrollView } from 'react-native';
import {ListItem } from 'react-native-elements';
import CustomIcon from '../helpers/CustomIcon';
export default class Home extends Component {
render() {
return (
<ScrollView >
{myList.map((l, i) => (
<ListItem
leftAvatar={CustomIcon(l.name)} // CustomIcon(name)
key={i}
title={this.Capitalize(l.name)}
bottomDivider
/>
))}
</ScrollView>
)
}
}
你可以创建一个图标组件并传递它的属性来制作你自己的图标。但是因为我只使用 avatar
这足以拥有一个功能。但是可以大大提高。
我正在使用 React-Native 构建应用程序。我继续使用 FlatIcon 获取一些自定义图标,我将其上传到 IcoMoon 并按照安装步骤在 react-native
.
问题是我得到的结果与我安装的完全不同。
这是我在应用程序上获得的图标:
但我应该得到这个结果:
CustomIcon.js
import { createIconSetFromIcoMoon } from 'react-native-vector-icons';
import icoMoonConfig from './selection.json';
export default createIconSetFromIcoMoon(icoMoonConfig);
Home.js
import React, { Component } from 'react';
import { ScrollView } from 'react-native';
import CustomIcon from '../helpers/CustomIcon';
export default class Home extends React.Component {
render() {
return (
<ScrollView>
<CustomIcon name="eco-fuel" size={80} />
</ScrollView>
);
}
}
如您所见,它没有颜色,布局也大不相同。我尝试使用其他图标,但得到了相同的结果。
我找到了获得所需结果的替代方法。还是没有解决为什么react-native-vector-icons
没有显示正确图标layout/colour的问题。
我没有使用图标,而是从 IcoMoon 下载了每个 1-2kb 的 .png
,而不是每个 3-4kb 的 svg
文件。
我创建了一个CustomIcon.js
import React from 'react';
import {Image} from 'react-native'
export default CustomIcon = name => {
switch (name) {
case 'coal':
return <Image source={require('../resources/assests/icons/coal.png')} />;
case 'gas':
return <Image source={require('../resources/assests/icons/eco-fuel.png')} />;
case 'imports':
return <Image source={require('../resources/assests/icons/electric-tower.png')} />;
case 'hydro':
return <Image source={require('../resources/assests/icons/hydroelectric-power.png')} />;
case 'biomass':
return <Image source={require('../resources/assests/icons/natural-product.png')} />;
case 'nuclear':
return <Image source={require('../resources/assests/icons/nuclear-energy.png')} />;
case 'other':
return <Image source={require('../../resources/assests/icons/power-plant.png')} />;
case 'solar':
return <Image source={require('../resources/assests/icons/solar-energy.png')} />;
case 'wind':
return <Image source={require('../resources/assests/icons/wind-energy.png')} />;
default:
return 'none';
}
}
如您所见,如果您有更多图片,这将需要一些时间。
获取图像Home.js
import React, { Component } from 'react';
import { ScrollView } from 'react-native';
import {ListItem } from 'react-native-elements';
import CustomIcon from '../helpers/CustomIcon';
export default class Home extends Component {
render() {
return (
<ScrollView >
{myList.map((l, i) => (
<ListItem
leftAvatar={CustomIcon(l.name)} // CustomIcon(name)
key={i}
title={this.Capitalize(l.name)}
bottomDivider
/>
))}
</ScrollView>
)
}
}
你可以创建一个图标组件并传递它的属性来制作你自己的图标。但是因为我只使用 avatar
这足以拥有一个功能。但是可以大大提高。