#react-native #navbar #react-native-router-flux
#react-native #навигационная панель #react-native-router-flux
Вопрос:
В настоящее время я пытаюсь реализовать логотип, представляющий собой png-файл, в навигационной панели react-native-router-flux. Я не уверен, возможно ли это, поскольку я не нашел ни одного примера в Интернете. Я попытался использовать свойство ‘navigationBarBackgroundImage’ из react-native-router-flux. В приведенном ниже коде свойства sceneStyle и navigationBarStyle работают, однако фоновое изображение — нет. Есть какие-нибудь советы?
<Router
sceneStyle={{ paddingTop: 60 }}
navigationBarStyle={{ backgroundColor: '#80ffbf' }}
navigationBarBackgroundImage={{src:'./Resources/GiftIt_Logo_Green.png' }}
>
Комментарии:
1. вы смотрели на это на странице github? github.com/aksonov/react-native-router-flux/issues/1310
2. Также взгляните на то, как он создал компонент, посмотрите, как это выглядит на стороне js и ios. Вы можете обновить код вручную, но вы, вероятно, не сможете обновить, если появится что-то новое.
Ответ №1:
Я добавил логотип в навигационную панель, используя renderTitle prop в корневой сцене, и отрисовал пользовательский компонент:
const AppLogo = () => {
return (
<View style={{ alignItems: 'center', marginTop: 26 }}>
<Image source={require('./app/assets/images/appLogo.png')}
style={{ width: 84, height: 27 }} />
</View>
);
};
const MyApp = React.createClass({
render() {
<Provider store={store}>
<RouterWithRedux hideNavBar={true}>
<Scene key="root" renderTitle={() => { return <AppLogo />; }}>
<Scene key="home" component={HomePage} title="My App" initial={true} />
...
});
Ответ №2:
При создании вашей сцены передайте renderTitle()
метод в ваш компонент scene, и вы сможете вставить туда свое изображение. Убедитесь, что вы получаете правильный относительный путь к вашему файлу изображения.
import React from 'react';
import { View, Image } from 'react-native';
import { Scene, Router } from 'react-native-router-flux';
import Feed from './components/Feed';
import LogoText from './assets/logo-text.png';
const RouterComponent = () => {
return (
<Router>
<Scene
key="Feed"
renderTitle={() => (
<View>
<Image style={styles.headerLogo} source={LogoText} />
</View>
)}
renderBackButton={() => (null)}
navigationBarStyle={styles.header}
component={Feed}
/>
</Router>
);
};
const styles = {
header: {
backgroundColor: 'lightgrey',
padding: 25,
justifyContent: 'center',
alignItems: 'center',
flexDirection: 'row',
height: 64,
},
headerLogo: {
height: 14,
width: 90,
},
};
export default RouterComponent;
Ответ №3:
Ознакомьтесь с разделом проблем на странице github.
Попробуйте это
navigationBarBackgroundImage={{
uri: 'navbar-background', // reference to resource
width: Dimensions.get('window').width, // make sure the image stretches all the way
height: 64, // height of the navbar
}}