๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐Ÿ’ป๐Ÿ’ญ๐ŸŽง๐ŸŒ

[React Native] 03-3 ์ž์›๊ณผ ์•„์ด์ฝ˜ ์‚ฌ์šฉํ•˜๊ธฐ ๋ณธ๋ฌธ

๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์•ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

[React Native] 03-3 ์ž์›๊ณผ ์•„์ด์ฝ˜ ์‚ฌ์šฉํ•˜๊ธฐ

adorableco 2023. 8. 7. 21:41
๋ฐ˜์‘ํ˜•

ImageBackground ์ฝ”์–ด ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉํ•˜๊ธฐ

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>

 

๋ฐ˜์‘ํ˜•