์๋ ํ์ธ์~
์ค๋์ ์ ๊ฐ ์ ์ฉํ๊ณ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ SnapKit์ ๋ํด์ ๊ฐ๋จํ ์ ๋ฆฌํ๊ณ
๋ฐ์ํ๋ ์๊ฒผ๋ ์ด์๋ฅผ ์ ๋ฆฌํ๋ ค๊ณ ํฉ๋๋ค.
SnapKit์ ๋ํด์ ์์๋ณด๊ธฐ ์ด์ ์
Swift์์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์ด์์์ ์ ์ฝ์กฐ๊ฑด์ ์ฃผ๊ธฐ ์ํด์๋
Anchor์ constraint๋ฅผ ์ด์ฉํด ์ฌ์ฉํ๋ ๊ฒ์ ์๊ณ ๊ณ์ค ๊ฒ๋๋ค.
var testButton = UIButton()
// translatesAutoresizingMaskIntoConstraints์ ๊ธฐ๋ณธ์ ์ผ๋ก ture๋ก ์ค์ ๋์ด์์ต๋๋ค.
// ์ด๋ ์๋์ผ๋ก ์ ์ฝ์ ๋ฐ๋ณํํ๋ ๊ธฐ๋ฅ์ผ๋ก ์ ๊ฐ ์ค ์ ์ฝ์กฐ๊ฑด์ ๋ฐ๋ฅด๊ธฐ ์ํด์๋ false๋ก ์ค์ ํด์ผํ์ฃ !
testButton.translatesAutoresizingMaskIntoConstraints = fale
view.addSubview(testButton)
//๊ทธ๋ฆฌ๊ณ ๋ ํ๊ฐ์ง! ๋ฐ๋ก .isActive๋ฅผ = true๋ก ์ค์ ํด์ผ ์ ์ฝ์กฐ๊ฑด์ด ์ค์ ๋ฉ๋๋น
testButton.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 15).isActive = true
์์ ์ฝ๋๋ฅผ ๋ณด์๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ์ฝ์กฐ๊ฑด์ ์ค์ ํฉ๋๋ค.
1. ๊ฐ์ฒด ์์ฑ
2. translatesAutoresizingMaskIntoConstraints = false
3. ์ ์ฝ์กฐ๊ฑด ์ค์
4. isActive ์ค์
ํ๋์ ๊ฐ์ฒด์ผ ๊ฒฝ์ฐ ์๊ณ ๊ฐ ๋ํ์ง๋ง ๋ง์ฝ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด ์ฝ๋์ ๊ธธ์ด๊ฐ ๋์ด๋๊ณ
๋ฌด์๋ณด๋ค ๊ฐ๋ ์ฑ์ด ์ข์ง ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋์ ๊ธฐ์กด์ ์์ ๋ณด๋ค
์ง๊ด์ ์ผ๋ก ์ ์ฝ์กฐ๊ฑด์ ์ฌ์ฉํ ์ ์๋ค๋ ์ ์์
SnapKit์ ์ ์ฉํ๊ณ ์์ต๋๋ค.
๊ฐ์ UI๋ฅผ SnapKit์ผ๋ก ๊ตฌํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import SnapKit
var testButton = UIButton()
view.addSubview(testButton)
// ํด๋ก์ ํํ๋ก ์ ์ฝ์กฐ๊ฑด์ ๋ฐ๋ก!
// translatesAutoresizingMaskIntoConstraints์ ๊ฐ์ ๋ฐ๋ก false๋ก ์ฒ๋ฆฌํด์ฃผ๊ณ
// isActive์ ๊ฒฝ์ฐ์๋ ๋ฐ๋ก true๋ก ์ฒ๋ฆฌํด์ค๋๋ค
testButton.snp.makeConstraints { make in
make.leading.equalTo(15)
}
๊ฐ๋ฐ ์ด์
๊ตฌํํ๊ณ ์ถ์๋ ๊ฒ์
๋ฒํผ์ ์ ์ฝ์กฐ๊ฑด์ ์ ๋ฐ์ดํธํด ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ฃผ๊ณ ์ถ์์ต๋๋ค.
๊ทธ๋์ ์๊ณ ์๋ updateConstraints๋ฅผ ์ด์ฉํ์๋๋ฐ
fatalError : Updated constraint could not find existing matching constraint to update: \(layoutConstraint)
์์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์ ๋ฐ์ดํธ๋ ์ ์ฝ ์กฐ๊ฑด์ด ์ ๋ฐ์ดํธํ ๊ธฐ์กด ์ผ์น ์ ์ฝ ์กฐ๊ฑด์ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ์์ต๋๋ค.
์ด์
updateConstraints์ ๊ฒฝ์ฐ ๊ธฐ์กด์ ์ ์ฝ์กฐ๊ฑด์ด ๊ฑธ๋ ค์๋ ๊ฒ์ ์ฐพ์์ ์ ๋ฐ์ดํธํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
๊ธฐ์กด์๋ ์๋ Constraint๋ฅผ update ํ ๋ ๋ถ์ฌํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ธ๋ฐ์ ํํ ์ด์ ์ธ์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ๋น์จ๋ก width์ ์ ์ฝ์กฐ๊ฑด์ ์ฃผ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ฐพ์ ์ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ ์ฉ
ํด๊ฒฐ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋ ํ ์ ์์ง๋ง
๊ธฐ์กด์ ์๋ width๋ฅผ ๋น์จ์ด ์๋ ์์๊ฐ์ผ๋ก ์ ์ฉํ๋๋ ์ ์์ ์ผ๋ก ์ ๋๋ฉ์ด์ ์ด ๋์ํ์ต๋๋ค.
์ ํํ ์ด์ ๋ฅผ ๋ค์ ์ฐพ์๋ณด๊ณ ์ด ํฌ์คํ ์ ์ถ๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.