๐ŸŒฑ SeSAC

[SeSAC] 220810 TIL

taeeekki 2022. 8. 14. 23:47

ReusableView Protocol

๊ธฐ์กด์— cell ๋งˆ๋‹ค id๋ฅผ ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌํ•˜๋˜ ๋ฐฉ์‹์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ”„๋กœํ† ์ฝœ๋กœ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ

protocol ReusableViewProtocol {
    static var reuseIdentifier: String { get }
}

extension UICollectionViewCell: ReusableViewProtocol {
    static var reuseIdentifier: String {
        return String(describing: self)
    }
}
extension UITableViewCell: ReusableViewProtocol {
    static var reuseIdentifier: String {
        return String(describing: self)
    }
}

 


 

prepareForReuse

์žฌ์‚ฌ์šฉ ์…€์ด ์žฌ์‚ฌ์šฉ ๋˜๊ธฐ ์ „ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ฉ”์„œ๋“œ์ž„. ์…€์„ ์ •์ƒ์ ์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๊ธฐ์กด ์‚ฌ์šฉ๋˜๋˜ ์…€์˜ ์ปจํ…์ธ ๊ฐ€ ์žฌ์‚ฌ์šฉ ๋˜๋ฉด์„œ ๋‹ค๋ฅธ ์…€์—๋„ ์˜ํ–ฅ์„ ์ฃผ๊ฒŒ ๋œ๋‹ค. ์…€์„ dequeue ํ•ด์˜ค๊ณ  return ํ•˜๊ธฐ ์ „์— ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

override func prepareForReuse() {
  super.prepareForReuse()

}

๋‹จ์ˆœํžˆ contents์— ๋Œ€ํ•œ ๋‚ด์šฉ๋“ค์„ ๋‹ค ์ดˆ๊ธฐํ™”ํ•ด์ฃผ๋ฉด ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋“ค์—ฌ๋‹ค ๋ณด๋ฉด ๋‚ด์šฉ์ด ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ๊ณผ๋Š” ์ข€ ๋‹ค๋ฅด๋‹ค. ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ์ปจํ…์ธ ์™€ ๊ด€๋ จ์ด ์—†๋Š” ์†์„ฑ(ex. ์•ŒํŒŒ ๊ฐ’, ํŽธ์ง‘ ๋˜๋Š” ์„ ํƒ ์ƒํƒœ ๋“ฑ)์„ ์žฌ์„ค์ •ํ•˜๋ผ๊ณ  ๋‚˜์™€ ์žˆ๋‹ค. ์ปจํ…์ธ ์™€ ๊ด€๋ จ๋œ reset(์žฌ์„ค์ •) ์ž‘์—…์€ cellForRowAt์—์„œ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋” ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

 


 

Autoresizing Mask

Autoresizing Mask๋Š” ๋™์  ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก Apple์ด ๋„์ž…ํ•œ ์˜ˆ์ „ ๋ฐฉ์‹์˜ ๊ธฐ๋Šฅ์ด๋‹ค. ๋ถ€๋ชจ ๋ทฐ๊ฐ€ ์ปค์ง€๊ฑฐ๋‚˜ ์ž‘์•„์ง์— ๋”ฐ๋ผ์„œ ์„œ๋ธŒ ๋ทฐ์˜ ํฌ๊ธฐ๋‚˜ ์œ„์น˜๋ฅผ ์กฐ์ •ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๊ฒŒ ๋œ๋‹ค. Autoresizing๊ณผ ๊ณผ Autolayout์„ ๋™์‹œ์— ์ ์šฉํ•˜๊ณ ์ž ํ•˜๋ฉด ๋ ˆ์ด์•„์›ƒ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ์ด์œ ๊ฐ€ Autoresizing Mask๋กœ ๊ฒฐ์ •๋œ ๋ ˆ์ด์•„์›ƒ์€ Autolayout์˜ Constraints๋กœ ๋ณ€ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

translatesAutoresizingMaskIntoConstraints

์ฝ”๋“œ ๊ธฐ๋ฐ˜์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๋•Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์œ„์˜ ์†์„ฑ์ด true๋กœ ์„ค์ •๋˜๊ณ , ์Šคํ† ๋ฆฌ๋ณด๋“œ์— Autolayout์ด ์ ์šฉ๋œ ๋ทฐ๋Š” ์ž๋™์œผ๋กœ false๊ฐ€ ์„ค์ •๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด ์œ„์˜ ์†์„ฑ์„ false๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผ ๋ ˆ์ด์•„์›ƒ์„ ์ •์ƒ์ ์œผ๋กœ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.