- Published on
๐ฑ iOS - ScrollView ์คํ ๋ ์ด์์์ผ๋ก ๊ตฌํํ๊ธฐ
- Authors
- Name
- ์ด์ฐฝ์ค
UIScrollView
๋ ์คํ ๋ฆฌ๋ณด๋์์ ์ฌ์ฉํ ๋๋ง๋ค ์๋ฌ๋ฅผ ๋ด๋ UI ์ปดํฌ๋ํธ ์ค ๋ํ์ ์ธ ์น๊ตฌ์
๋๋ค. ํ์ง๋ง ์ธ์ ๋์ฒ๋ผ ์ปดํจํฐ๋ ์๋ชป์ด ์์ฃ . ์ ๋๋ก ์๊ณ ์ฌ์ฉํ์ง ๋ชปํด์ ์ผ์ด๋๋ ์ฅ์ ๋ฌผ์ด๋ผ๊ณ ์๊ฐํ๊ณ ๋จธ๋ฆฌ๋ฅผ ์ ๋ฆฌํ ๊ฒธ ๋จ๊ณ๋ณ๋ก ์์๋ณด๊ฒ ์ต๋๋ค.
UIScrollView
UIScrollView
๊ฐ ๋ญ์ง๋ถํฐ ์์๋ณด๊ฒ ์ต๋๋ค. UIScrollView
๋ ํ๋ฉด์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋๋ ์ฝํ
์ธ ๋ฅผ ํํํ ๋ ์คํฌ๋กค์ ํตํด์ ๋ ๋ง์ ์ ๋ณด๋ฅผ ํ์ํ ์ ์๋๋ก ํด์ฃผ๋ ์ปดํฌ๋ํธ์
๋๋ค.
์ด UIScrollView
๋ ๊ต์ฅํ ์ค์ํ ๋
์์
๋๋ค. ์ ํฌ๊ฐ ๋งค์ผ๊ฐ์ด ์ฌ์ฉํ๋ UITableView
, UICollectcionView
์ ๊ฐ์ ์คํฌ๋กค์ด ๊ฐ๋ฅํ ์ปดํฌ๋ํธ๋ค์ Super Class์ด๊ธฐ ๋๋ฌธ์ด์ฃ . ๊ทธ๋์ ์ด๋ฐ ํ
์ด๋ธ๋ทฐ์ ์ปฌ๋ ์
๋ทฐ์์ ์คํฌ๋กค๋ทฐ์ ๋ฉ์๋์ ์์ฑ๋ค์ ์ ๊ทผํ ์ ์์ต๋๋ค.
์คํฌ๋กค๋ทฐ๋ ๋ ๊ฐ์ง ๋ ์ด์์์ผ๋ก ๋๋์ด์ ธ ์์ต๋๋ค. Content Layout
์ ์คํฌ๋กค๋๋ฉฐ ํ๋ฉด์ ํํ๋ ์ปจํ
์ธ ๋ค์ ๋ ์ด์์์ ๊ฒฐ์ ํ๋ ๋ ์ด์์์
๋๋ค. Frame Layout
์ ํ๋ฉด ์์์ ์ค์ ๋ก ํํ๋๋ ์คํฌ๋กค๋ทฐ์ ํฌ๊ธฐ์ ์์น๋ฅผ ๊ฒฐ์ ํ๋ ๋ ์ด์์์
๋๋ค.
ScrollView ์คํ ๋ ์ด์์ ์ก์์ฃผ๊ธฐ
์ ์ฌ์ง์ฒ๋ผ UIScrollView
๋ฅผ ํ๋ ๋ฃ์ด์ฃผ๊ณ ๋ค๋ฅธ View
๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์คํ ๋ ์ด์์์ ์ก์์ค๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ View
๋ค๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ฐ๋ก ์ ์ฉ์ด ์๋๋ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค? ์ค์ง์ ์ธ Contents๊ฐ ์ ์๋์ด ์์ง ์์์ ๊ทธ๋ฐ ๊ฒ์ด๋ผ๊ณ ์ถ์ ํ๊ณ ์์ง๋ง ์ ํํ ์ด์ ๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์๊ฒ ๋๋ฉด ์ถ๊ฐ ๋ด์ฉ์ผ๋ก ์ ์ด๋๊ฒ ์ต๋๋ค..! ์๋ฌดํผ Constraints๋ฅผ ๋ณด๋ฉด ์ ์ ์ฉ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
View ์ถ๊ฐํ๊ณ Layout Guide ์ค์ ํ๊ธฐ
์คํฌ๋กค๋ทฐ๋ง ์์ผ๋ฉด ์๋ฌด ์ธ๋ชจ๊ฐ ์๊ฒ ์ฃ ? ์ค์ ๋ก ์คํฌ๋กค ๋ View
๋ฅผ ๋ฃ์ด๋ด
์๋ค.
์ ๋ ๋ณด๊ธฐ ํธํ๊ฒ ์คํฌ๋กค๋ทฐ์ ๊ฒน์น๊ฒ ์์น๋ฅผ ์ก์์ฃผ๊ณ ์ด๋ฆ๋ Content View๋ผ๊ณ ๋ฐ๊ฟ์ฃผ์์ต๋๋ค. ํ์ ๊ณผ์ ์ ์๋๋๋ค!
์คํฌ๋กค ๋ ์ค์ ์ปจํ
์ธ ๋ฅผ ๋ด์ View
์ด๊ธฐ ๋๋ฌธ์ Content Layout Guide๋ฅผ ์ด View
์ Layout๊ณผ ๋ง์ถฐ์ค ๊ฒ๋๋ค. ์ผ์ข
์ ๋ฐฐ๊ฒฝ์ด์ ๋ํ์ง ์ญํ ์ ํ๋ Content View์ ํฌ๊ธฐ๋ฅผ ์ปดํ์ผ๋ฌ์๊ฒ ์๋ ค์ฃผ๋ ๊ณผ์ ์ธ๊ฑฐ์์!
Content View๋ฅผ Ctrlํค๋ฅผ ๋๋ฅธ ์ํ๋ก Content Layout Guide๊น์ง ๋์ด๋น๊ธฐ๋ฉด ๋ ์์๊ฐ์ ๋ ์ด์์์ ์ค์ ํด์ค ์ ์์ต๋๋ค.
Content View์ ํฌ๊ธฐ๊ฐ ๊ณง ์คํฌ๋กค๋ทฐ์ ๋ค์ด๊ฐ ์ปจํ ์ธ ์ ํฌ๊ธฐ์ด๊ธฐ ๋๋ฌธ์ Leading, Top, Trailing, Bottom์ Spacing์ ๋ชจ๋ 0์ผ๋ก ์ค์ ํด์ค์๋ค.
ํ์ฌ ์คํ ๋ฆฌ๋ณด๋์ ๋์ฌ์ง ๊ฐ ๊ทธ๋๋ก Constant ๊ฐ์ด ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ๋ชจ๋ 0์ด ๋ง๋์ง ํ์ธํด๋ณด๋ ์์ ์ด ํ์ํฉ๋๋ค!
Scroll View์ ๋ฐฉํฅ ์ ํด์ฃผ๊ธฐ
์ ๋ ์ธ๋ก๋ก ์คํฌ๋กค๋๋ ํ๋ฉด์ ๋ง๋ค๊ณ ์ถ์ต๋๋ค. ํ๋ฉด์ด ์ธ๋ก๋ก ์คํฌ๋กค๋ ๋ ๋์ด์ ๋์ด ์ค์ ๊ณ ์ ๋์ด ์๋ ๊ฐ์ ๋์ด์ฃ ?
์คํฌ๋กค๋ทฐ์ Frame Layout Guide๋ ๋์ด๊ฐ ๊ณ ์ ๋์ด ์๋ค๋ฉด ์ธ๋ก๋ก ์คํฌ๋กค๋๊ฒ ์๋ํฉ๋๋ค. ๋ฐ๋๋ก ๋์ด๊ฐ ๊ณ ์ ๋์ด ์๋ค๋ฉด ๊ฐ๋ก๋ก ์คํฌ๋กคํ ์ ์์ต๋๋ค.
์ Frame Layout Guide๋ฅผ ์ค์ ํด์ค์ผ ํ๋์ง ํท๊ฐ๋ฆด ์ ์๋๋ฐ์, Frame Layout์ ์ค์ ์คํฌ๋กค๋ทฐ๊ฐ ํํ๋ Layout์ด๋ผ๊ณ ํ์์ต๋๋ค.
Frame Layout์ ๋์ด๋ฅผ ์ปจํ ์ธ ์ ๋์ด์ ๊ฐ๊ฒ ์ค์ ํ๋ฉด ์ปดํ์ผ๋ฌ Frame ๋ฐ์ ๊ฐ๋ก ํํ๋ก ํํํ ์ปจํ ์ธ ๊ฐ ๋ ์ด์ ์๋ค๋ ๊ฑธ ์ ์ ์๊ฒ ์ฃ ? ๊ทธ๋์ ๊ฐ๋ก๋ ๊ณ ์ ๋๊ณ ์ธ๋ก๋ก๋ง ์คํฌ๋กค๋๊ฒ ๋ฉ๋๋ค.
์์์ Content Layout์ ์ก์์คฌ์ ๋์ฒ๋ผ Content View๋ฅผ Ctrlํค๋ฅผ ๋๋ฅธ์ฑ๋ก Frame Layout Guide์ ๋์ด๋์ค๋๋ค.
๊ทธ๋ฌ๋ฉด ๋์ค๋ Constraint ์ค์ ์ฐฝ์์ Equal Width๋ฅผ ์ ํํด์ ๊ฐ๋ก๋ฅผ ๊ฐ๊ฒ ๋ง๋ค์ด์ค๋๋ค.
๋ฌผ๋ก ์์์์ฒ๋ผ ์์น๊ฐ ํ์ฌ ์คํ ๋ฆฌ๋ณด๋์ ๋ง๊ฒ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ์ ํ ๋ฒ ํ์ธํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ด๋ฒ์๋ ๋น์จ๋ก์ ๋ค๋ค์ง๋ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ Multiplier๊ฐ 1์ธ์ง ํ์ธํด์ค๋๋ค!
๋์ด ์ ํด์ฃผ๊ธฐ
์ฌ๊ธฐ๊น์ง๊ฐ ์คํฌ๋กค๋ทฐ๋ฅผ ์คํ ๋ฆฌ๋ณด๋์์ ์ค์ ํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์์ง ๋นจ๊ฐ ์๋ฌ๊ฐ ์ฌ๋ผ์ง์ง ์์์ฃ ? ์ปจํ ์ธ ์ ๋์ด๋ ์คํฌ๋กค๋ทฐ์ Frame Layout๊ณผ ๊ฐ๊ฒ ๋ง๋ค์ด์ฃผ์๊ธฐ ๋๋ฌธ์ ์ ํด์ก์ง๋ง, ๋์ด๋ ์์ง ์ ํด์ฃผ์ง ์์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๋ฐ๋ผ์ Content View์ ๋์ด๋ฅผ ๊ณ ์ ๊ฐ์ผ๋ก ์ ํด์ฃผ๊ฑฐ๋, ์ค์ ๋ก ๋ด๋ถ์ ์ปดํฌ๋ํธ๋ค์ ์ง์ด๋ฃ์ด์ฃผ๋ฉด ํด๋น ์๋ฌ๋ ์ฌ๋ผ์ง๋๋ค.
์ถ์ฒํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ Content View
์ ๋์ด ๊ฐ์ ์ฃผ๋, Priority๋ฅผ ๋ด๋ ค์ฃผ์ด์ ์ ํด์ง ๋์ด ์ด์์ด ํ์ํ๋ฉด ๋์ ์ผ๋ก ๋์ด๋๊ฒ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
Content View๋ฅผ Ctrlํค๋ฅผ ๋๋ฅธ์ฑ๋ก ๋์๋ค๊ฐ Content View ๋ณธ์ธ์๊ฒ ๋์ค๋๋ค. ๊ทธ ์ํ์์ Height๋ฅผ ์ค์ ํด์ฃผ๋ฉด, ํ์ฌ ์คํ ๋ฆฌ๋ณด๋์ ์ค์ ๋ ๋์ด๊ฐ Constraint์ ์ถ๊ฐ๋ฉ๋๋ค.
Priority๋ ๋ง์ฐฌ๊ฐ์ง๋ก Constraint์์ ์์ ํด์ค ์ ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ธ 1000์์ ๋ฎ์ ๊ฐ์ผ๋ก ์ค์ ํด์ค์๋ค! ์ด ๊ฐ์ ๋ด๋ถ์ ๋ค์ด์ฌ ์ปดํฌ๋ํธ๋ค์ ๋์ด Priority๋ณด๋ค ๋ฎ์ผ๋ฉด ๋ฉ๋๋ค. ์ ๋ ๋๋ํ๊ฒ 250์ผ๋ก ์ค์ ํด์ฃผ์์ต๋๋ค.
์ด๋ ๊ฒ ์๋ฌ๊ฐ ์๋ ๊น๋ํ ์คํ ๋ฆฌ๋ณด๋๊ฐ ๋์๋ค์.
UIScrollView
๋ ๋ค๋ฃจ๊ธฐ ๊ต์ฅํ ๊น๋ค๋ก์ด ๋
์์ด์ง๋ง, ๊ฐ๋
์์ฒด๋ ์ฌ์ด ๊ฒ ๊ฐ์์. ๊ฐ๋
์ ์ดํดํ๊ณ ๋ค๋ฃฌ๋ค๋ฉด ์ต์ํด์ง๋๋ฐ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค!