์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ์๋ฃ๊ตฌ์กฐ
- ๊ฐ๋ฐ์
- ์น๊ฐ๋ฐ
- spring
- boj11653
- ์ปด๊ณต์
- ๋ฐฑ์คํ์ด
- ChatGPT
- ๋จ์ํ ์คํธ
- ์ปด๊ณต
- ์ฐ์ ์์ํ
- ์คํ๋ง
- ์ดํญ๊ณ์
- ์ฝ๋ฉํ ์คํธ
- ํ๋ก ํธ์ค๋
- ๋ชจ๋ฐ์ผ์ฑํ๋ก๊ทธ๋๋ฐ
- ๋ฐฑ์ค1436
- ์ปดํจํฐ๊ณตํ
- ์ฝ๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก๊ทธ๋๋ฐ
- ๊ทธ๋ฆฌ๋์๊ณ ๋ฆฌ์ฆ
- ์น๊ฐ๋ฐ๊ธฐ๋ก
- ๋ฆฌ์กํธ๋ค์ดํฐ๋ธ
- ํ์ด์ฌ
- ๋ฐฑ์๋
- ๊ทธ๋ฆฌ๋
- ๋ฐฑ์ค
- ๋ฆฌ์กํธ
- SSE
- Today
- Total
๐ป๐ญ๐ง๐
[React Native] 03-3 ์์๊ณผ ์์ด์ฝ ์ฌ์ฉํ๊ธฐ ๋ณธ๋ฌธ
[React Native] 03-3 ์์๊ณผ ์์ด์ฝ ์ฌ์ฉํ๊ธฐ
adorableco 2023. 8. 7. 21:41ImageBackground ์ฝ์ด ์ปดํฌ๋ํธ ์ฌ์ฉํ๊ธฐ
import {ImageBackground} from 'react-native'
ImageBackground ์ฌ์ฉ๋ฒ
<ImageBackground style={{flex: 1}} source={require('./src/assets/images/bg.jpg)} />
โ ์ด๋ฆ์ 'Image' ์๊ฐ ํฌํจ๋ Image๋ ImageBackground ์ปดํฌ๋ํธ๋ ํญ์ source ์์ฑ์ require ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋ ๋ฐฉ์์ผ๋ก ํ์ผ์ ์ค์ ํด์ผ ํ๋ค
โ width ์ height ์์ฑ๊ฐ์ ๋ฐ๋์ ์ค์ ํด์ผ ํ๋ค.
โ ImageBackground ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
Image ์ฝ์ด ์ปดํฌ๋ํธ
import {Image} from 'react-native'
โ Image ์ปดํฌ๋ํธ๋ ์์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
โป ์ฑ์ ์์์ด ์๋ ๋ค๋ฅธ ์๊ฒฉ์ง ์๋ฒ์์ ํ์ผ์ ๋ด๋ ค๋ฐ์ ๋ ๋๋งํ ๋
โก๏ธ {uri: ์ด๋ฏธ์ง_ํ์ผ_์น_์ฃผ์} ํํ์ ๊ฐ์ฒด๋ฅผ ์ค์ ํด์ผ ํ๋ค.
import * as D from './src/data'
const avatarUrl = D.randomAvatarUrl()
<Image source={{uri: avatarUrl}} style={[styles.image]} />
ํฐํธ ์ง์ ์ค์นํ๊ธฐ ์ฌ์ฉํ๊ธฐ
src/assets/fonts ๋๋ ํฐ๋ฆฌ์ ์์ ํ์ผ์ ์ฑ์ ํฌํจํ๋ ค๋ฉด
1) react_native.config.js ๋ผ๋ ๊ตฌ์ฑ ํ์ผ์ ์์ฑ
2) npx react-native link ๋ช ๋ น์ด ์คํ โก๏ธ ๋ฌธ์ ๋ฐ์ ์๋์ ํด๊ฒฐ๋ฒ
1) react_native.config.js ๋ผ๋ ๊ตฌ์ฑ ํ์ผ์ ์์ฑ
react-native.config.js
module.exports = {
project: {
ios: {},
android: {},
},
assets: ['./src/assets/fonts'],
}
โ ํ๋ก์ ํธ ํค๋ ๋ฐ๋์ ์์ด์ผ ํ๋ค.
2) npx react-native link ๋ช ๋ น์ด ์คํ
โก๏ธ ์คํ ๋งํน ๋๋ฌธ์ React Native 0.69 ๋ถํฐ link์ unlink ๊ธฐ๋ฅ์ด ์ฌ๋ผ์ก๋ค.
โ ๋์ ์๋์ ๊ฐ์ ๋ช ๋ น์ ํ๋ฉด ์ ์ ์๋ํ๋ค.
npx react-native-asset
ํฐํธ ์ค์
const styles = StyleSheet.create({
regular: {fontFamily: 'RobotoSlab-Regular', fontWeight: '400'},
medium: {fontFamily: 'RobotoSlab-Medium', fontWeight: '500'},
semiBold: {fontFamily: 'RobotoSlab-Bold', fontWeight: '600'},
bold: {
fontFamily: 'RobotoSlab-ExtraBold',
fontWeight: Platform.select({ios: '700', android: '600'}),
})
โ fontWeight : ๊ธ๊ผด ๋๊ป ์ค์ ๊ฐ๋ฅ โก๏ธ ์ซ์๋ '100' ์ฒ๋ผ ๋ฌธ์์ด๋ก ์ค์ ํด์ผ ํ๋ค.
โป ๋ถ๋ชจ ์์์์ ์์ ์์์ ์คํ์ผ์ ์ค์ ํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ ์๋ ์ ๊ฐ์ด ์ผ์ผ์ด ์์ฑ์ ์ค์ ํด์ค์ผ ํ๋ค.
<View style={[styles.flex, styles.padding10]}>
<Text style={[styles.text, styles.regular]}>{text} [regular]</Text>
<Text style={[styles.text, styles.medium]}>{text} [medium]</Text>
<Text style={[styles.text, styles.semiBold]}>{text} [semi bold]</Text>
<Text style={[styles.text, styles.bold]}>{text} [bold]</Text>
</View>
textWeight ์คํ์ผ ์์ฑ : 'left', 'center, 'right' โก๏ธ๊ธฐ๋ณธ๊ฐ์ 'light' ์ด๋ค.
react-native-vector-icons ์์ด์ฝ ํจํค์ง
Icon ์ปดํฌ๋ํธ
import Icon from 'react-native-vector-icons/์์ด์ฝ_์ธํธ_์ด๋ฆ'
์์ด์ฝ ์ธํธ ์ข ๋ฅ๋ github.com/oblador/react-native-vector-icons ์์ ํ์ธ ๊ฐ๋ฅ
Icon ์ปดํฌ๋ํธ ์ฌ์ฉ๋ฒ
<Icon name='์์ด์ฝ_์ด๋ฆ' size={์์ด์ฝ_ํฌ๊ธฐ} color='์์ด์ฝ_์์' onPress={์ฝ๋ฐฑ_ํจ์} />
โ onPress ์ฝ๋ฐฑ ํจ์๋ Button์ด๋ TouchableOpacity ์ปดํฌ๋ํธ์ onPress์ ์ฌ์ฉ๋ฒ์ด ๊ฐ๋ค.
โปiOS ์์ ์์ด์ฝ์ด ์ ๋๋ก ๋ํ๋์ง ์์ ๋
ios/AppName/Info.plist ์ <array> </array> ์์ ์์ด์ฝ ํจํค์ง์ ํฐํธ๋ฅผ ์ถ๊ฐํด ์ค๋ค
<key>UIAppFonts</key>
<array>
/* ์ด์ ์ ์ถ๊ฐํด๋์ ํฐํธ๋ค์ด ์์ ๊ฒ์ด๋ค. */
</array>
<string>AntDesign.ttf</string>
<string>Entypo.ttf</string>
<string>EvilIcons.ttf</string>
<string>Feather.ttf</string>
<string>FontAwesome.ttf</string>
<string>FontAwesome5_Brands.ttf</string>
<string>FontAwesome5_Regular.ttf</string>
<string>FontAwesome5_Solid.ttf</string>
<string>Fontisto.ttf</string>
<string>Foundation.ttf</string>
<string>Ionicons.ttf</string>
<string>MaterialCommunityIcons.ttf</string>
<string>MaterialIcons.ttf</string>
<string>Octicons.ttf</string>
<string>SimpleLineIcons.ttf</string>
<string>Zocial.ttf</string>