React Native๋ก ์ฑ์ ๋ง๋ค๋ค ๋ณด๋ฉด
์ด๋ฏธ์ง๋ฅผ ์ฑ์ ์ด๋ป๊ฒ ๋ฃ๊ณ , ์ด๋ป๊ฒ ๋ณด์ฌ์ค์ง
๊ณ ๋ฏผ์ด ๋ง์์ง๋ค.
์น๊ณผ ๋ค๋ฅด๊ฒ ๋ชจ๋ฐ์ผ ์ฑ์์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ง์ฃผํ๊ฒ ๋๋ค:
์ด๋ฒ ๊ธ์ React Native์์
์ด๋ฏธ์ง ์ฒ๋ฆฌ์ ํ์ํ ์ ๋ฐ์ ์ธ ์ง์๊ณผ ์ค์ ์์๋ฅผ ์ ๋ฆฌํ ๊ธ์ด๋ค.
import { Image } from 'react-native';
<Image
source={require('./assets/logo.png')}
style={{ width: 100, height: 100 }}
/>
require
)width
์ height
๋ฅผ ์ง์ ํด์ผ ํจ<Image
source={{ uri: 'https://example.com/image.jpg' }}
style={{ width: 200, height: 200 }}
resizeMode="cover"
/>
resizeMode
๋ ์ด๋ฏธ์ง ์ฑ์ฐ๊ธฐ ๋ฐฉ์ ์ค์ ์์ฑ | ์ค๋ช |
---|---|
cover | ๋น์จ ์ ์ง + ๊ฝ ์ฑ์ฐ๊ธฐ |
contain | ๋น์จ ์ ์ง + ๋ด๋ถ์ ๋ง๊ฒ ์ถ์ |
stretch | ๋น์จ ๋ฌด์ + ๊ฝ ์ฑ์ฐ๊ธฐ |
center | ๊ฐ์ด๋ฐ ์ ๋ ฌ (ํฌ๊ธฐ ์ ์ง) |
์์ดํฐ์ฒ๋ผ ๊ณ ๋ฐ๋ ๋์คํ๋ ์ด์์๋ @2x, @3x ์ด๋ฏธ์ง๋ฅผ ์ ๊ณตํด์ผ ๊นจ์ง์ง ์๋๋ค.
์์:
assets/
โโโ icon.png
โโโ icon@2x.png
โโโ icon@3x.png
<Image source={require('./assets/icon.png')} />
โ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋๊ณ React Native๊ฐ ์๋์ผ๋ก ๋๋ฐ์ด์ค ํด์๋์ ๋ง๋ ๋ฒ์ ์ ๋ถ๋ฌ์ด
React Native ๊ธฐ๋ณธ Image
๋ ์บ์ฑ ๊ธฐ๋ฅ์ด ์ฝํจ
โ ๋ฐ๋ณต ๋ก๋ฉ ์ ๊น๋นก์ด๊ฑฐ๋ ๋๋ ค์ง ์ ์์
react-native-fast-image
npm install react-native-fast-image
import FastImage from 'react-native-fast-image';
<FastImage
style={{ width: 100, height: 100 }}
source={{ uri: 'https://image.com/pic.jpg', priority: 'high' }}
resizeMode={FastImage.resizeMode.contain}
/>
โ
์๋ ์บ์ฑ
โ
๋ก๋ฉ ์ฐ์ ์์
โ
gif, ์นP ์ง์
ActivityIndicator
์ ํจ๊ป ์ฒ๋ฆฌImageBackground
์ปดํฌ๋ํธ ์ฌ์ฉ์ฒ์์ ๊ทธ๋ฅ Image
๋ก ๋ค ๋๋ ์ค ์์๋๋ฐ,
ํ๋กํ ์ด๋ฏธ์ง๊ฐ ํ๋ฆฟํ๊ฑฐ๋, ๋ฆฌ์คํธ์ ์ด๋ฏธ์ง๊ฐ ๋๋ฆฌ๊ฒ ๋จ๋ ๋ฌธ์ ๊ฐ ๊ณ์ ์๊ฒผ๋ค.
๊ทธ๋๋ถํฐ @2x ๊ตฌ์กฐ, FastImage, ์บ์ฑ ์ ๋ต์ ์ ๋๋ก ์ดํดํ๊ฒ ๋๋ค.
์ง๊ธ์ ์ด๋ฏธ์ง ์ฒ๋ฆฌ๋ ํ๋์ ์ฑ๋ฅ ์ต์ ํ ๋จ๊ณ๋ก ์๊ฐํ๋ค.
๐ผ๏ธ โ์ด๋ฏธ์ง๋ UX๋ค. ๊นจ์ง๋ฉด ์ ๋ขฐ๋๋ ๊ฐ์ด ๊นจ์ง๋ค.โ