1. 자원과 아이콘 사용하기
$ npm i react-native-vector-icons react-native-paper color faker
$ npm i -D @types/color @types/faker
$ npm i -D @types/react-native-vector-icons
/* eslint-disable */
import React from 'react';
import {
SafeAreaView,
StyleSheet,
Text,
Platform,
Dimensions,
View,
ImageBackground,
} from 'react-native';
import {Colors} from 'react-native-paper';
import Color from 'color';
const {width, height} = Dimensions.get('window');
const App = () => {
return (
<SafeAreaView style={[styles.flex]}>
{/* <Text style={[styles.text]}>os: {Platform.OS}</Text>
<Text style={[styles.text]}>width: {width}</Text>
<Text style={[styles.text]}>height: {height}</Text>
<View style={[styles.box, {borderRadius: 10}]} />
<View style={[styles.box, styles.border]} />
<View style={[styles.box, styles.border, {borderRadius: 10}]} /> */}
<ImageBackground
style={[styles.flex]}
source={require('./src/assets/images/bg.jpg')}
/>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
safeAreaView: {
flext: 1,
backgroundColor: Colors.blue500,
paddingLeft: Platform.select({ios: 0, android: 20}),
},
text: {
fontSize: 20,
marginBottom: 20,
marginLeft: 50,
marginTop: 20,
},
box: {
width: '70%',
height: 100,
backgroundColor: 'white',
marginBottom: 10,
marginLeft: Platform.select({ios: 20, android: 10}),
},
border: {
borderWidth: 10,
borderColor: Colors.lime500,
},
flex: {
flex: 1,
},
});
export default App;
ImageBackground라는 코어 컴포넌트를 이용해서 백그라운드 이미지를 설정할 수 있습니다.
base 64 기법으로도 html에 img의 src에 url이 아닌 숫자와 문자로 구성된 긴 코드가 들어간 경우가 있었는데 data:image/png;base64와 같은 경우였다.
이는 이미지를 base64인코딩 방식으로 사용한다는 것이다.
Base64는 데이터를 64진법으로 나타내는 것으로
0부터 63까지 ABCD~0123~+/으로 나타낸다
https://www.base64-image.de/
에 들어가서 작은 이미지 같은 파일을 문서(Html, JS, CSS)에 인라인으로 작성할 수 있는데, 작성된 이미지와 같은 정보는 이미 문서에 포함되어 있기 때문에, 서버에 요청하지 않고도 이미지를 사용할 수 있다.
but코드의 가독성이 씹창난다는 단점이 있다.
Image 코어 컴포넌트는 ImageBackground처럼 이미지 파일을 화면에 렌더링하는 기능을 제공합니다.
하지만 Image는 ImageBackground와 달리 자식 컴포넌트를 가질 수 없습니다.
/* eslint-disable */
import React from 'react';
import {
SafeAreaView,
StyleSheet,
Text,
Platform,
Dimensions,
View,
ImageBackground,
} from 'react-native';
import {Colors} from 'react-native-paper';
import Color from 'color';
const {width, height} = Dimensions.get('window');
import * as D from './src/data';
import {Image} from 'react-native';
const avatarUrl = D.randomAvatarurl();
const avatarSize = 50;
const App = () => {
return (
<SafeAreaView style={[styles.flex]}>
{/* <Text style={[styles.text]}>os: {Platform.OS}</Text>
<Text style={[styles.text]}>width: {width}</Text>
<Text style={[styles.text]}>height: {height}</Text>
<View style={[styles.box, {borderRadius: 10}]} />
<View style={[styles.box, styles.border]} />
<View style={[styles.box, styles.border, {borderRadius: 10}]} /> */}
<ImageBackground
style={[styles.flex]}
source={require('./src/assets/images/bg.jpg')}>
<Image source={{uri: avatarUrl}} style={[styles.image]} />
</ImageBackground>
</SafeAreaView>
);
};
const styles = StyleSheet.create({
safeAreaView: {
flext: 1,
backgroundColor: Colors.blue500,
paddingLeft: Platform.select({ios: 0, android: 20}),
},
text: {
fontSize: 20,
marginBottom: 20,
marginLeft: 50,
marginTop: 20,
},
box: {
width: '70%',
height: 100,
backgroundColor: 'white',
marginBottom: 10,
marginLeft: Platform.select({ios: 20, android: 10}),
},
border: {
borderWidth: 10,
borderColor: Colors.lime500,
},
flex: {
flex: 1,
},
image: {
width: avatarSize,
height: avatarSize,
borderRadius: avatarSize / 2,
},
});
export default App;
* 폰트 설치하기
이제 Dancing Script 폰트를 src/assets/fonts 디렉터리의 내용을 앱에 반영해 봅시다
src/assets/fonts 디렉터리의 자원 파일을 앱에 포함하려면 npx react-native link라는 명령을 실행해야 합니다. 그러나 이 명령은 react-native.config.js라는 구성 파일이 필요합니다. 먼저 package.json파일이 있는 디렉터리에서
$ touch react-native.config.js
으로 파일 하나를 생성해 줍니다
module.exports = {
project: {
ios: {},
android: {},
},
assets: ['./src/assets/fonts'],
};
을 작성해 줍니다
이 때 project가 반드시 있어야 하는데 이는 ios와 android디렉터리를 대상으로 동작해야 한다는 것을 지정하는 것입니다
이미지 파일과 달리 폰트 파일은 그냥 사용할 수가 없고 npx react-native link명령을 실행해야 합니다.
$ npx react-native link
명령을 통해 앞서 작성한 react-native.config.js 파일 내용을 반영합니다.
또한
$ npx react-native link react-native-vector-icons
을 실행하는데 이 명령은 ios 디렉터리의 Podfile에 이 패키지와 관련된 내용을 삽입만 합니다.
즉 아직 원격지의 패키지(또는 라이브러리)가 개발 컴퓨터 쪽에 설치되지 않은 상태입니다.
그래서 다음 명령으로 원격지의 패키지를 개발 컴퓨터 쪽에 설치해야 합니다
iOS용 개발은 이처럼 npx react-native link 명령을 실행했으면 npx pod-install명령도 항상 실행해야 합니다.
$ npx pod-install
이 명령을 실행하면 RNVectorIcons 네이티브 모둘용 오브젝티브-C패키지가 잘 설치되었다는 메세지를 볼 수 있습니다.
'React > ReactNative' 카테고리의 다른 글
React-Native ( style 속성과 StyleSheet API 이해하기) - part5 (0) | 2021.11.20 |
---|---|
React-Native ( style 속성과 StyleSheet API 이해하기) - part4 (0) | 2021.11.20 |
React-Native ( style 속성과 StyleSheet API 이해하기) - part2 (0) | 2021.11.19 |
React-Native ( style 속성과 StyleSheet API 이해하기) - part1 (0) | 2021.11.19 |