๐ŸŽ iOS

[iOS] Snapkit์„ ํ™œ์šฉํ•œ ์ œ์•ฝ์กฐ๊ฑด ๋ณ€๊ฒฝ

gom1n 2023. 5. 20. 15:54

๋งจ๋‚  ๊นŒ๋จน์–ด์„œ ์ ์–ด๋†”์•ผ๊ฒ ๋‹ค.ใ…Ž

 

์š”๊ตฌ์‚ฌํ•ญ์€ ์•„๋ž˜ ์ด๋ฏธ์ง€์™€ ๊ฐ™๋‹ค. ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๊ฐ€ ๋ณด์ž„์— ๋”ฐ๋ผ ๊ฐ„๊ฒฉ์ด ๋‹ฌ๋ผ์ ธ์•ผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์•ˆ๋“œ๋กœ์ด๋“œ์—์„œ๋Š” Gone์ด๋ผ๋Š” ์†์„ฑ์ด ์žˆ์–ด, ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ Gone ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž๋™์œผ๋กœ ์•„๋ž˜ ๋ทฐ๋“ค์€ ์œ„์น˜ ๋ฐ ๊ฐ„๊ฒฉ์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜! iOS์—์„œ๋Š” Gone ์ฒ˜๋ฆฌ๊ฐ€ ๋”ฐ๋กœ ์—†๊ณ  hidden์ฒ˜๋ฆฌ๋งŒ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์—๋Ÿฌ๋ฉ”์„ธ์ง€๋ฅผ hidden ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋„ ๊ธฐ์กด์˜ ๊ฐ„๊ฒฉ์€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

์ด๋Ÿด ๋•Œ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

1. StackView ์‚ฌ์šฉ

์Šคํƒ๋ทฐ์˜ ๋†’์ด๋Š” ๋‚ด๋ถ€์˜ ์ปดํฌ๋„ŒํŠธ๋“ค์— ์˜ํ–ฅ์„ ๋ฐ›์•„ ์„ค์ •๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ • ๋ทฐ๋ฅผ hidden ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž๋™์œผ๋กœ ๋†’์ด๊ฐ€ ์žฌ์„ค์ •๋œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ท€์ฐฎ๋‹ค.

 

2. Constraint ์ฐธ์กฐ ํ›„, ๊ฐ„๊ฒฉ update

var intervalConstraint: Constraint? = nil
passwordLabel.snp.makeConstraints { make in
    self.intervalConstraint = make.top.equalTo(passwordTextField.snp.bottom).offset(32).constraint
    make.leading.equalTo(passwordTextField)
}

Constraint ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์„ ์–ธํ•ด์ค€๋‹ค.

 

๊ทธ ํ›„, update ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค~

errorMessageHidden ? passwordView.intervalConstraint?.update(offset: 32) : passwordView.intervalConstraint?.update(offset: 50)

+ ๋˜๋Š” snapkit์˜ updateConstraints ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฒˆ์™ธ) update์™€ remake์˜ ์ฐจ์ด

  • update: ์ œ์•ฝ์กฐ๊ฑด์˜ constant ๊ฐ’๋งŒ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • remake: ๋ชจ๋“  ์ œ์•ฝ์กฐ๊ฑด์„ ์ œ๊ฑฐํ•˜๊ณ , ๋‹ค์‹œ ์ƒ์„ฑํ•œ๋‹ค.