ロゴ
Welcome画面に表示するロゴを追加しましょう。
イメージの追加
ロゴイメージを追加します。
まずはPNG画像ファイルをImageSourcePropType
型としてimportするために、モジュール定義を追加します。
次のファイルを追加してください。
src/@types/image.d.ts
src/@types/image.d.ts
declare module '*.png' {
import {ImageSourcePropType} from 'react-native';
const value: ImageSourcePropType;
export default value;
}
備考
上記モジュール定義の詳細は、TypeScript公式ドキュメントのWildcard module declarationsを参照してください。
src/assets/logo.png
にロゴイメージとしてこちらの画像を追加してください。
ロゴ部品の追加
ロゴはImage
コンポーネントを用いて直接表示できますが、画面サイズに応じたスタイル調整といった計算処理もあるので、共通部品として作成しましょう。
次のファイルを追加・修正してください。
src/components/basics/image/Logo.tsx
src/components/basics/image/index.ts
src/components/basics/index.ts
src/components/basics/image/Logo.tsx
import logoImage from 'assets/logo.png';
import React from 'react';
import {Dimensions, Image, ImageSourcePropType, ImageStyle, StyleProp, StyleSheet} from 'react-native';
interface Props {
source?: ImageSourcePropType;
style?: StyleProp<ImageStyle>;
}
export const Logo: React.FC<Props> = ({source = logoImage, style}) => {
return <Image source={source} resizeMode="contain" style={[styles.image, style]} />;
};
const {width, height} = Dimensions.get('window');
// 見た目の調整として画面の3分の1をデフォルトサイズとする
const defaultImageSize = Math.min(width, height) * (1 / 3);
const styles = StyleSheet.create({
image: {
width: defaultImageSize,
height: defaultImageSize,
},
});
src/components/basics/image/index.ts
export * from './Logo';
src/components/basics/index.ts
+ export * from './image';
export * from './view';
追加が出来たらWelcome画面にロゴを追加します。
次のファイルを修正してください。
src/screens/home/Welcome.tsx
src/screens/home/Welcome.tsx
import {useNavigation} from '@react-navigation/native';
+ import {Logo} from 'components/basics';
import React from 'react';
import {StyleSheet, View} from 'react-native';
import {Button, Text} from 'react-native-elements';
export const Welcome: React.FC = () => {
const navigation = useNavigation();
return (
<View style={styles.container}>
+ <Logo />
<Text h1>Welcome</Text>
<View>
<Button onPress={() => navigation.navigate('Instructions')} title="登録する" />
</View>
</View>
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
alignItems: 'center',
justifyContent: 'center',
},
});
修正できたら実行してください。 Welcome画面にロゴが表示されれば成功です。
危険
ロゴが表示されない場合は、キャッシュが残っている可能性があります。こちらのリンクを参考にキャッシュを削除してください。