์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- NEXT
- ์ฝ๋ฉ
- ๋ถํธ์บ ํ
- ๋ฆฌ์กํธ
- ํ์
- JavaScript
- ๋ด์ผ๋ฐฐ์์บ ํ
- ํ์ค
- JS
- ํ๋ก ํธ์๋
- ํจ์
- Firebase
- native
- ๊ฐ๋ฐ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- PROJECT
- ์๊ณ ๋ฆฌ์ฆ
- trainning
- ํ๋ก์ ํธ
- ์๋ฌ
- K-Digital
- react
- Redux
- ๋ด์ผ๋ฐฐ์
- wil
- API
- ๋ณ์
- ์จ๋ผ์ธ
- type
- rn
- Today
- Total
Frontend ๊ฐ๋ฐ์ - hyo.loui
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - Movies app : Native Stack & Bottom tabs ์ ์ฉํ์ฌ UI ๋ง๋ค๊ธฐ ๋ณธ๋ฌธ
๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ - Movies app : Native Stack & Bottom tabs ์ ์ฉํ์ฌ UI ๋ง๋ค๊ธฐ
hyo.loui 2023. 1. 4. 16:58๐ฏ๋ชฉ์ :
1. React-navigation ์ ์ฉ UI ๋ง๋ค๊ธฐ
- Native-Stack
- Bottom-tabs
2. StyleSheet.absoluteFill
3. Swiper ์ ์ฉ
๐คข ์ค๋ฅ ํด๊ฒฐ :
- UI ๋ถ๋ถ์ด๋ผ ์ค๋ฅ๊ฐ ๋ฑํ ์์๋ค๊ณ ํ๋ค..
1. User Interface ๋ง๋ค๊ธฐ / horizontal : ์ฌ์ด๋(๊ฐ๋ก) ์คํฌ๋กค
์ฐ์ UI๋ ๋น ๋ฅด๊ฒ ์์ ์ ํด ๋๊ณ ,
๋ฆฌํฉํ ๋ง์ ํ๊ณ ๋์ ์คํ์ผ์ ์ ์ฉํ๊ฒ ๋ค!
์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํตํด styled.component ์คํ์ผ์ ์ ์ฉํ ์์ ์ด๋ผ ๋ฏธ๋ฆฌ install์ ํ๋ค
web์์๋ ๊ฐ๋ก ์คํฌ๋กค์ ์๋นํ ์ด๋ ต๊ฒ ๋ง๋ค์๋ ๊ธฐ์ต์ด ์์๋๋ฐ..
RN์์๋ ์์ฃผ ์ฌํํ๊ฒ <ScrollView/> ํ๊ทธ์
horizontal ์ด๋ผ๋ ์์ฑ์ true๋ก ํ ๋นํ๋ฉด
์์์ฒ๋ผ ์ฌ์ด๋ ์คํฌ๋กค์ด ๊ฐ๋ฅํ๋ค
์ธ๋ก ์คํฌ๋กค์ RN์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก
ํ๊ทธ๋ง๋ค
- display: flex
- flex-direction : column
์ ์คํ์ผ์ด ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก <ScrollView/> ํ๊ทธ ๋ด์์๋ ์๋์ ์ผ๋ก ์ธ๋ก๋ก ์คํฌ๋กค์ด ๋๋ค!
2. StyleSheet.absoluteFill (RN absolute , ์๋ฆฌ๋จผํธ ๋๋ ํ๊ทธ ๊ฒน์น๊ธฐ)
StyleSheet๋ RN์ ์๋ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด์ง๋ง
๊ธฐ์กด์๋ const ๋ณ์๋ช = StyleSheet.create`~css style~`;
์ด๋ฐ ์์ผ๋ก ์์ฃผ ์ผ์ง๋ง StyleSheet์์ ์ ๊ณตํ๋ absoluteFill ์ด๋ผ๋ ์์ฑ์ ์ด์ฉํ๋ฉด
๋ฒ๊ฑฐ๋กญ๊ฒ ํฌ์ง์ ์ ํ๋ํ๋ ์ง์ ํด ์ฃผ์ง ์๊ณ ๋ ์ ํ๋ฉด๊ณผ ๊ฐ์ด ๋ฐ๋ก ๊ฒน์น๊ฒ ์ ์ฉ ํ ์ ์๋ค
์์์๋ LinearGradient ๋ผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ
๊ทธ๋ผ๋ฐ์ด์ ํจ๊ณผ๋ฅผ ๋ฃ๊ณ , color: "white" ์ ์ฉํ๋ค
3. Swiper ์ ์ฉํ๊ธฐ
https://github.com/leecade/react-native-swiper.
์ Read.me ๋ฅผ ์ฝ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ค,
์ ์ฉ์ ์์ฃผ ๊ฐ๋จํ๋ค
๋๊ฐ์ด Read.me ์ ์์ฑ๋์ด์๋ import ๊ตฌ๋ฌธ์ ๊ฐ์ ธ์ค๊ณ ,
์ํ๋ ํ๊ทธ์ ์์์ <Swiper> ํ๊ทธ๋ง ์์์ฃผ๋ฉด ๋๋ค
autoplay : ์๋ ์ฌ๋ผ์ด๋ ํจ๊ณผ
loop : ๋ง์ง๋ง ํ์ด์ง >> ์ฒซํ์ด์ง ( ๋ฌดํ๋ฐ๋ณต )
showPagination : ํ์ด์ง๋ค์ด์ (ํ๋์ ํ์ด์ง๋ฒํผ)
์ฌ๊ธฐ์ Swiper์ ๋ค์ด๊ฐ๋ width์ height๊ฐ์ด flex 1 ๋ก ๋ค์ด๊ฐ๊ฒ๋์ด์
์๋์น ์๊ฒ, ์๋๋ก ์ญ ์ ์ฒดํ๋ฉด์ด ๋์๋ค...
๊ทธ๋์ Swiper์๋ height๋ฅผ 100%๋ก ์ฃผ๊ณ ,
์์ ํ๊ทธ์ height๋ฅผ ๋ฐ๋ก ์์ฑํด์ค์ผํ๋ค!
์กฐ๊ธ ๋ฒ๊ฑฐ๋กญ์ง๋ง ์ด๊ฒ ๊ธฐ๋ณธ๊ฐ์ด๋ react-native-swiper๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ด์ฉ ์ ์๋ ๋ถ๋ถ์ด๋ค.
4. ์ ์ฉ UI
์ต์ข ์ ๋ฆฌ
- <ScrollView> ํ๊ทธ์ horizontal={true} ์ ์ฉ ์, ๊ฐ๋ก(์ฌ์ด๋) ์คํฌ๋กค ์ ์ฉ
- StyleSheet์์ ์ ๊ณตํ๋ absoluteFill ์ด๋ผ๋ ์์ฑ์ผ๋ก ๊ฐํธํ๊ฒ ์๋ฆฌ๋จผํธ ๊ฒน์น๊ธฐ ๊ฐ๋ฅ
- Swiper์ ๋ค์ด๊ฐ๋ width์ height๊ฐ์ด flex 1์ด ๊ธฐ๋ณธ๊ฐ ์ด๋ฏ๋ก, ๋ฐ๋ก ์ฌ์ด์ฆ ์ง์ ํ์