๐ฑ CollectionView๋ฅผ ๋ง๋ค์๋๋ฐ ์ ์๋ ?
Code base๋ก ๊ฐ๋ฐํ ๋ ํญ์ ์๊ธฐ๋ ๋ฌธ์ , (์์ง ๋ฏธ์ํ ๊ฐ์๋ผ์ ํญ์,,,์๊ธฐ๊ณคํ๋ค. ์ธ์ ์ฏค ๊ณ ์๊ฐ์๊ฐ ๋ ์ ์์๊น!)
View๊ฐ ์๋ฐ๋ ์ฝ์์ฐฝ์ ์ดํด๋ด์ผํ๋ค๋ ์ ์ ์๊ฒ ๋์๋ค. (์ฝ์์ฐฝ ์ด๋ ต๊ฒ ์๊ฒผ์ด,,)
์ง๊ธ์ CollectionView๋ฅผ ๋ง๋ค๊ณ ์๋๋ฐ ๋ทฐ๊ฐ ์๋๊ณ ์๋ค. hierarchy๋ฅผ ์ดํด๋ณด์๋ ๋จ์ง ์๋๋ค! (์์ดํจ๋์)
๋ด๊ฐ ์ด collectionview์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
private func configureCollectionView() {
collectionView.delegate = self
collectionView.dataSource = self
collectionView.register(DynamicCollectionViewCell.self, forCellWithReuseIdentifier: DynamicCollectionViewCell.identifier)
}
private func setupLayout() {
view.addSubview(collectionView)
NSLayoutConstraint.activate([
collectionView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
collectionView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
collectionView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
collectionView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor)
])
}
collectionView์ top, leading, trailing, bottom ์ ์ก์์ฃผ์๊ณ ์ด ๋ชจ๋ super view๋ฅผ ๊ธฐ์ค์ผ๋ก safeArea ์์ชฝ์ผ๋ก ๋ค์ด์ค๊ฒ ์ก์์ฃผ์๋ค.
๐ค ๋๋์ฒด ์ด๋์ ๋ฌธ์ ๊ฐ ์๊ฒผ๋์ง ๋ชจ๋ฅด๊ฒ ์ผ๋, ์ฝ์์ฐฝ์ ์ดํด๋ณด์.
์ฐ๋ฆฌ ํ์์ ์ฒ์ฌ๊ฐ๋๋์ ๋ง์์ ๋ค์ด๋ณด๋ฉด, layout์ด ๊นจ์ง๋ฉด '์ฝ์์ฐฝ์์ ํ๋ฅผ๋ธ๋ค'๊ณ ํ๋ค. ๊ทธ๋์ ์ฝ์์ฐฝ์ ์ดํด๋ณด์๊ณ , ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๊ตฌ๋ฅผ ๋ณผ ์ ์์๋ค.
์ฝ์์ฐฝ์์๋ ์๋์ ๊ฐ์ ์๋ง์ ์๋ฌ๋ค์ด ํ๋ฅผ ๋ด๊ณ ์์๋ค.
์ด๋ฐ ์๋ฌ๊ฐ ํ,,, 10๊ฐ์ ๋? ํํํํ
๋ ์ด์์์ด ๊นจ์ง๋ ์ด๋ป๊ฒ ์์๋ด์ผํ๋์ง ์ฐพ์๋ณด๋ค๊ฐ, ์๋์ ๊ฐ์ ์ฌ์ดํธ๋ฅผ ์๊ฒ ๋์๋ค.
https://www.wtfautolayout.com/
์ด ํ์ด์ง์์๋ ์ด๋๋ถ๋ถ์์ ์ด๋ค ๋ ์ด์์์ด ๊นจ์ก๋์ง ์กฐ๊ธ์ด๋๋ง ์๊ฐ์ ์ผ๋ก ์ ์ ์๊ฒ ํด์ค๋ค. ์ฌ๊ธฐ๋ค๊ฐ๋ ์ฝ์์ฐฝ์ ์๋ ๋ ์ด์์์ด ๊ฐ์ง๋ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ฉด ๋๋ค.
"<NSAutoresizingMaskLayoutConstraint:0x600002ee3a70 h=--& v=--& UICollectionView:0x143811800.width == 0 (active)>",
"<NSLayoutConstraint:0x600002ef0c30 UICollectionView:0x143811800.leading == UILayoutGuide:0x6000034d1340'UIViewSafeAreaLayoutGuide'.leading (active)>",
"<NSLayoutConstraint:0x600002ef0a50 UICollectionView:0x143811800.trailing == UILayoutGuide:0x6000034d1340'UIViewSafeAreaLayoutGuide'.trailing (active)>",
"<NSLayoutConstraint:0x600002eea580 'UIView-Encapsulated-Layout-Width' UIView:0x141709c50.width == 744 (active)>",
"<NSLayoutConstraint:0x600002ef0370 'UIViewSafeAreaLayoutGuide-left' H:|-(0)-[UILayoutGuide:0x6000034d1340'UIViewSafeAreaLayoutGuide'](LTR) (active, names: '|':UIView:0x141709c50 )>",
"<NSLayoutConstraint:0x600002ef05a0 'UIViewSafeAreaLayoutGuide-right' H:[UILayoutGuide:0x6000034d1340'UIViewSafeAreaLayoutGuide']-(0)-|(LTR) (active, names: '|':UIView:0x141709c50 )>"
์ด ๋ถ๋ถ์ ์์ฑํด์, Go! ๋ฒํผ์ ๋๋ฅด๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ค!
์ด ํ์ด์ง์์ ์ด๋์ autolayout ์๋ฌ๊ฐ๋๋์ง ์ดํด๋ณด์๋ค. ์ด๊ฑธ๋ก ๋์๊ฐ์ ์ฝ์งํ๋๋ฐ... ๊ฒฐ๊ณผ๋
๋ญ ์ด๊ฒ์ ๊ฒ ์๋ง๊ธด ํ์ง๋ง ๋ง์ง๋ง์ ์ด๋ก์ค ์ณ๋์ ๊ฒ์ ๋ณด์. ใ ใ ใ ใ ใ ใ ใ ใ ใ ใ Autolayout ์ผ๋ก ๋ช์๊ฐ์ ์ง๊ธ ์จ๋ฆํ๋๋ฐ,,,์ ๊ฑธ ์์จ์์๋ค... ใ ใ ใ ใ ํํํํํํํํํํ ํ๋ณดํ๊ตฐ
collectionView.translatesAutoresizingMaskIntoConstraints = false
์ด๊ฑธ ์ฐ์ง ์์์ ๊ทธ๋ ๋ค. ์ผํํํํํํํํ ์์ผ๋ก ์ ์๊ฐํ์,,
์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋๋ ค๋ณด๋, ์๋์ ๊ฐ์ด ๋ทฐ๊ฐ ๋ฑ์ฅํ๋ค. (ํ์์ ์ํด ipad๋ก ๊ฐ๋ฐํ๊ณ ์์ด๋๋ค ํํฌ)
์ด๋ ๊ฒ ๋จ๋๋ฐ, ์ด์ฐ๋๋ ๋ด๊ฐ cell์๋ํ ๋ ์ด์์์ ์๋ชป ์ก์๊ฒ์ ๋ง๋๊ฒ๊ฐ๋ค. ๋ค์ ์ก์๋ณด์!
๐ ๊ฒฐ๋ก
collectionView.translatesAutoresizingMaskIntoConstraints = false
๊น๋จน์ง ๋ง๊ณ ์์ฑํ์!