์ด๋ฒ ๊ธ์์๋ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ๋ง์ถฐ์ฃผ๋ ๊ธฐ๋ฅ์ธ BoxFit์ ๋ํด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
Flutter๋ฅผ ์ฌ์ฉํ ๊ฒฝํ ์ธ์๋ ๋ค๋ฅธ ์ธ์ด๋ ํ๋ ์์ํฌ์์๋ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃฌ ๊ฒฝํ์ด ์๋ค๋ฉด ์ด๋ฏธ ์๊ณ ์์ ๋ด์ฉ์ผ ๊ฒ์ด๋ค. ๋๋ถ๋ถ์ ํ๋ก ํธ์๋ ํ๋ ์์ํฌ์์๋ ๋น์ทํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๊ณ ์์ด์ Flutter๋ผ๊ณ ํฌ๊ฒ ๋ค๋ฅธ ๋ถ๋ถ์ ์์๋ ๊ฒ ๊ฐ๋ค.
์ ๋ฆฌํ๋ ์ฐจ์์์ ์์ฑํ๋ ๋ด์ฉ์ด๋ ๊ฐ๋ณ๊ฒ ๋ณด์๊ธธ ๋ฐ๋๋ค.
Flutter์์ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃฐ ๋ ์ฌ์ฉํ๋ ์ด๋ฏธ์ง๋ Asset, Network, File, Memory ์ด๋ ๊ฒ 4๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
ํ์ง๋ง 4๊ฐ์ง์ ์ด๋ฏธ์ง๋ฅผ ๋ค๋ฃฐ ๋ ๊ณตํต์ ์ผ๋ก ์๊ณ ์์ด์ผ ํ๋ ๋ถ๋ถ์ด ๋ฐ๋ก ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
๋ฌผ๋ก ๋ถ๋ฌ์จ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๋ฉด ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ์ง ์์๋ ๋์ง๋ง, ์ฌ์ฉํ๋ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด ์๊ฐํด์ผ ํ๋ ๋ถ๋ถ์ด ๋ง๋ค.
์ด๋ฏธ์ง์ ๋น์จ๋ ๊ณ ๋ คํด์ผํ๊ณ , ์๋ณธ์ ํด์๋๋ ๊ณ ๋ คํด์ผ ์ํ๋ ์ด๋ฏธ์ง๋ฅผ ๋ณด์ฌ์ค ์ ์๊ฒ ๋๋ค.
๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋น์ฐํ ๊ท๊ฒฉํ๋ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ์ฌ ์ฌ์ฉํ๋ฉด ๋๊ฒ ์ง๋ง, ์๋น์ค์์ ์ง์ ์ ๊ณตํ๋ ์ด๋ฏธ์ง๊ฐ ์๋ ์ด์ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ์ํ๋ ๋งํผ ๋ณด์ฌ์ฃผ๊ธฐ๊ฐ ์ฝ์ง ์๋ค.
์ด๊ฒ ๋ฌด์จ๋ง์ธ๊ฐ ์ดํด๊ฐ ๋์ง ์์ ์๋ ์๊ธฐ์ ํ ์คํธ๋ฅผ ํด๋ณด๋๋ก ํ์.
์ค๋ฆฌ์ง๋ ์ด๋ฏธ์ง๋ ์ง์ฌ๊ฐํ์ ๊ฐ๋ก ์ฌ์ด์ฆ๊ฐ ๋ ํฐ ์ด๋ฏธ์ง์ด๋ค. ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ ์ฌ๊ฐํ์ ์์ ฏ์์ ๋ณด์ฌ์ฃผ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น ?
์ ์ฌ๊ฐํ์ ๋ง์ถ๋ค๊ณ ํด๋ ์ด๋ฏธ์ง๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋น์จ๋ก ๋ฆฌ์ฌ์ด์ง๋๊ธฐ ๋๋ฌธ์ ์ ๋ ๊ฒ ์์๋๋ก ๊ณต๋ฐฑ์ด ์๊ธฐ๊ฒ ๋๋ค.
์์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ Image ์์ ฏ์ fit์ ์ฌ์ฉํด์ ํด๊ฒฐํ ์ ์๋ค.
fit์ BoxFit์ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋๋ฐ, BoxFit์ ์ด๋ฏธ์ง ์ธ์๋ ์์ ์์ ฏ์ ๋ถ๋ชจ ์์ ฏ์ ๋ง์ถ๊ณ ์ถ์ ๋์ ์ฌ์ฉํ ์๋ ์๋ค.
BoxFit์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๋ฆฌ์ฌ์ด์ฆ ํ ์ ์๋ ์ต์ ์ ์ ๊ณตํ๊ณ ์๋๋ฐ, ์ฒ์ฒํ ํ๋์ฉ ์ดํด๋ณด๋๋ก ํ์.
contain
cover
fill
fitHeight
fitWidth
none
scaleDown
๊ฐ๊ฐ ์๋ณธ ์ด๋ฏธ์ง์ ๋น๊ตํด์ ์ดํด๋ณผ ์์ ์ด๊ณ , ํน์ฑ์ ์ฌ๋ฌ ๊ฐ์ ์ฌ์ด์ฆ๋ก ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝ์์ผ ํ ์คํธ ํ์๋ค.
ํ ์คํธ์ ์ฌ์ฉํ ๋๋ฐ์ด์ค๋ iPhone 15 Pro Max ๋ชจ๋ธ์ ์ฌ์ฉํ์๊ณ , ์ด๋ฏธ์ง๋ 3024x4032 ์ฌ์ด์ฆ์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ์๋ค.
BoxFit.Contain์ ๋ํด์ ๋จผ์ ์ดํด๋ณด๋๋ก ํ์.
์ด๋ฏธ์ง์ ์๋ ๋น์จ์ ์ ์งํ๋ฉด์ ๋ถ๋ชจ ์์ ฏ์ ์ต๋ ๊ณต๊ฐ์ ์ฐจ์งํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๋ณธ์ ๋น์จ์ด ์ ์ง๋๊ธฐ ๋๋ฌธ์, ์ด๋ฏธ์ง ์์ฒด๋ ๋์ด๋๊ฑฐ๋ ์ด๋ฏธ์ง ์ผ๋ถ๊ฐ ์๋ ค๋๊ฐ์ง ์๊ฒ๋๋ค. ํ์ง๋ง ๋ถ๋ชจ ์์ ฏ์ width๋ height ๋ชจ๋๊ฐ ์ผ์นํ์ง๋ ์์ ์ ์๋ค.
original ๋น์จ์ ์ ์งํ๋ฉด์ ๋ถ๋ชจ ์์ ฏ์ width, height ์ค์ ์ต๋ ๊ณต๊ฐ์ ์ฐจ์งํ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
๋ค์์ผ๋ก ๋ํ์ ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ์ฒ๋ฆฌํ ๋์ ์ฌ์ฉํ๋ ๋ฆฌ์ฌ์ด์ฆ ๋ฐฉ๋ฒ์ธ BoxFit.cover์ ๋ํด์ ์ดํด๋ณด์.
BoxFit.cover๋ ์ด๋ฏธ์ง๋ฅผ ์๋ณธ์ ์ฌ์ด์ฆ๋ฅผ ์ ์งํ๋ฉด์ ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ ๋งํผ์ ์ ์ธํ๊ณ ๋ ํฌ๋กญํ๋ ๋ฐฉ๋ฒ์ด๋ค. ํฌ๋กญ์ ์ด๋ฏธ์ง๋ฅผ ์๋ผ๋ด๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๋ํ์ ์ธ ๋ฆฌ์ฌ์ด์ฆ ๋ฐฉ๋ฒ์ธ ์ด์ ๊ฐ ๋ฐ๋ก ์๋ณธ ์ฌ์ด์ฆ๊ฐ ์ ์ง ๋๋ฉด์ ํฌ๋กญ๋๊ธฐ ๋๋ฌธ์, ๋ถ๋ชจ ์์ ฏ์ width, height๊ฐ ๋ชจ๋ ์๋ฒฝํ๊ฒ ํผํ
๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋จ์ ์ ๋น์ฐํ ์ด๋ฏธ์ง์ ์ผ๋ถ๊ฐ ์๋ ค๋๊ฐ ์ ์๊ธฐ ๋๋ฌธ์, ๋ณด์ฌ์ฃผ๊ณ ์ ํ๋ ์ด๋ฏธ์ง ์์ญ์ด ๋ชจ๋ ๋ณด์ฌ์ง์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๊ฒ์ด ๋จ์ ์ด๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
BoxFit.cover๋ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ๋ถ๋ชจ ์์ ฏ๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น ?
์๋ณธ ์ด๋ฏธ์ง๋ฅผ 3024x4032 -> 100x133์ผ๋ก ํด์๋๋ฅผ ๋ฎ์ถ๊ณ ํ ์คํธ๋ฅผ ํด๋ณด๋๋ก ํ์.
๊ฒฐ๊ณผ๋ ๋์ผํ๊ฒ ๋ณด์ฌ์ง๋ค. ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ ๋งํผ ํ์ฅํ ๋ค์ ํฌ๋กญ๋๊ธฐ ๋๋ฌธ์ ๋ณด์ฌ์ง๋ ์์ญ์ ์ด๋ฏธ์ง ์ฌ์ด์ฆ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ง์ง ์๋๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
์ด๋ฒ์๋ ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ค์ฒ๋ผ ์๋ณธ์ ๋น์จ์ ์ ์ง์ํค์ง ์๊ณ ๋ฆฌ์ฌ์ด์ง๋๋ BoxFit.fill์ ๋ํด์ ์์๋ณด์.
Boxfit.fill์ ์๋ณธ ์ด๋ฏธ์ง์ ๋น์จ์ ๋ฌด์ํ๊ณ ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ๋งํผ ๊ฐ์ ๋ก ์ด๋ฏธ์ง๋ฅผ ๋๋ฆฌ๊ฒ ๋๋ค. ๊ฐ๋ฐํ๋ฉด์ ํ ๋ฒ๋ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ๋ฒ์ด๊ธฐ๋ ํ๋ค.
์ด๋ฏธ์ง์ ์๋ณธ์ด ์ด์ํ๊ฒ ๋์ด๋๊ธฐ ๋๋ฌธ์ ๊ฑฐ์ ๋๋ถ๋ถ ์ฌ์ฉํ์ง ์์ ๊ฒ์ด๋ผ ์๊ฐ๋ค์ง๋ง BoxFit์ด ์ด๋ฏธ์ง์๋ง ์ฌ์ฉ๋๋ ๊ฒ์ ์๋๊ณ , ์์ ์์ ฏ์ ํผํ ํ ๋์๋ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ์์๋๋๋ก ํ์.
์ด๋ฏธ์ง ์ฌ์ฉ์์๋ ์๋ณธ ๋น์จ์ ์ ์งํ์ง ์๋๋ค๋ ์ ์ ๋ฐ๋์ ์๊ณ ์์ด์ผ ํ๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
์ด์ด์ BoxFit.contain์์๋ width, height ์ค ์ต๋ ํ์ฅ ์์ญ์ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์ฌ์ด์ฆํ๋ ๋ฐฉ๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ํน์ ๋๋น๋ ๋์ด๊ฐ ๊ธฐ์ค์ด ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ธ fitHeight, fitWidth์ ๋ํด์ ์์๋ณด์.
๋จผ์ , BoxFit.fitHeight๋ contain๊ณผ ๋์ผํ๊ฒ ์๋ณธ ๋น์จ์ด ์ ์งํ๋ ๋ถ๋ชจ ์์ ฏ์ ์ต๋ ํ์ฅ ์์ญ์ ๋์ด์ ํผํ ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
์ด์ด์ ๋ถ๋ชจ ์์ ฏ์ ํ์ฅ ์์ญ์ ๋๋น๋ก ๊ณ ์ ์ํค๋ BoxFit.fitWidth์ ๋ํด์ ์ดํด๋ณด์.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
์ด๋ฒ์๋ BoxFit.none์ ๋ํด์ ์์๋ณด๋๋ก ํ์. BoxFit.none์ none์ด๋ผ๋ ์๋ฏธ ๋๋ฌธ์, ์๋ณธ์ ๊ทธ๋๋ก ๋ณด์ฌ์ฃผ๋ ๋ฏํ์ง๋ง ์์ ํ ๋ค๋ฅธ ๊ฐ๋ ์ด๋ค.
original ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๋ 3024x4032์ผ๋ก ๋๋ฐ์ด์ค ์ฌ์ด์ฆ๋ณด๋ค ํจ์ฌ ํฐ ์ฌ์ด์ฆ์ ์ด๋ฏธ์ง์ด๋ค.
Image ์์ ฏ์ ์ฌ์ฉํ ๋์ ์ฌ์ด์ฆ๋ฅผ ์ง์ ํ์ง ์๊ณ , fit๋ ์ง์ ํ์ง ์๋๋ค๋ฉด original ์ด๋ฏธ์ง๋ contain์ด ๊ธฐ์ค์ด ๋์ด ํผํ
์ด ๋๋ค. ์ฆ ๋๋น๋ฅผ ๊ธฐ์ค์ผ๋ก ํผํ
๋ ์ํ์ด๋ค.
BoxFit.none์ ์ด๋ฏธ์ง ์ฌ์ด์ฆ ๊ทธ๋๋ก๋ฅผ ๋ณด์ฌ์ค ์ํ์์ ๋ถ๋ชจ ์์ ฏ์ ํฌ๋กญํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์ด๋ฏธ์ง๊ฐ ๋๋ฌด ํฐ ๊ฒฝ์ฐ ์ด๋ฏธ์ง์ ๊ทนํ ์ผ๋ถ๋ถ๋ง์ด ๋
ธ์ถ๋๊ธฐ๋ ํ๊ณ , ๋ฐ๋๋ก ๋๋ฌด ์์๊ฒฝ์ฐ ๋ถ๋ชจ ์์ ฏ ๋งํผ ํ์ฅ์ ํ์ง ๋ชปํ์ฌ ๋น ์์ญ์ด ๋
ธ์ถ๋ ์๋ ์๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
๋ง์ง๋ง์ผ๋ก ๊ฐ์ฅ ์ดํดํ๊ธฐ ์ด๋ ค์ด ๋ฐฉ๋ฒ์ธ BoxFit.scaleDown์ ๋ํด์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค.
์ด ๋ฐฉ๋ฒ์ด ์ ์ดํดํ๊ธฐ ์ด๋ ต๋ค๊ณ ํ๋์ง๋ ์ฌ์ฉํด๋ณด๋ฉด ์ ์ ์๋๋ฐ, ๋ ธ์ถ๋๋ ์ด๋ฏธ์ง๊ฐ BoxFit.contain๊ณผ ๋์ผํ๊ฒ ๋ณด์ฌ์ง๋ค๋ ๊ฒ์ด๋ค.
๊ฒฐ๊ณผ ๊ฐ์ ๋น๊ตํด๋ณด์. ๋จผ์ BoxFit.contain์ด๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
๊ฒฐ๊ณผ ๊ฐ์ด ๋์ผํ ๊ฒ์ ์ ์ ์๋ค.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
contain๊ณผ scaleDown์ ์ฐจ์ด์ ์ ๋ญ๊น ? ๋ฐ๋ก contain๊ณผ ๋๋ถ๋ถ ์ ์ฌํ์ง๋ง, ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ๋ถ๋ชจ ์์ ฏ์ ์ฌ์ด์ฆ๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ์ด๋ฏธ์ง ์ฌ์ด์ฆ๊ฐ ์ค์ด๋ค๊ฒ ๋๊ณ , ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ๋ถ๋ชจ ์์ ฏ๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ ์ด๋ฏธ์ง ํฌ๊ธฐ๊ฐ ํ์ฅ๋์ง ์๋๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
์ฆ ์ด๋ฏธ์ง์ ์ฌ์ด์ฆ๊ฐ ํฐ ๊ฒฝ์ฐ์๋ contain๊ณผ ์ฐจ์ด์ ์ด ์์ง๋ง ์ด๋ฏธ์ง ์ฌ์ด์ฆ๊ฐ ๋ถ๋ชจ ์์ ฏ๋ณด๋ค ์์ ๊ฒฝ์ฐ์๋ BoxFit.scaleDown์์๋ ์ด๋ฏธ์ง๊ฐ ์ปค์ง์ง ์๋๋ค๋ ์ฐจ์ด์ ์ด ์๋ค.
์ด๋ฏธ์ง ํฌ๊ธฐ๋ฅผ 100x133์ผ๋ก ์กฐ์ ํด ์ฃผ๊ณ contain๊ณผ scaleDown์ ๊ฒฐ๊ณผ๋ฅผ ๋น๊ตํด๋ณด์.
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
original | 400 x 400 | 400 x 250 | 300 * 600 |
---|---|---|---|
BoxFit์ ๋ํด์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํด ์ดํด๋ดค๋๋ฐ, BoxFit์ ์ด๋ฏธ์ง๋ฅผ ์ฌ์ฉํ ๋์๋ง ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๊ณ FittedBox ์์ ฏ์ ์ฌ์ฉํด์๋ ์์ ์์ ฏ์ ํผํ ํ ์ ์์ผ๋ ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ถ๋ชจ ์์ ฏ์ ๋ง์ถฐ์ง๋์ง๋ฅผ ์๊ณ ์์ผ๋ฉด ๋๋ค.
๋ค์๋ฒ์๋ FittedBox๋ฅผ ์ฌ์ฉํ BoxFit์ ๋ํด์๋ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
๊ฐ์ฌํฉ๋๋ค.