Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป
๋ฐ˜์‘ํ˜•

potato's iOS Story/๊ฐœ๋ฐœํ•˜๋ฉด์„œ ๋งŒ๋‚œ ์นœ๊ตฌ๋“ค 25

[UIKit] UIButton์˜ invalidateIntrinsicContentSize()๊ณผ Configuration ๋ถ„๊ธฐ์ฒ˜๋ฆฌ! (UIButton๊ณผ์˜ ์ „์Ÿ)

์‚ฌ์‹ค๋Œ€๋กœ ๋งํ•˜์ž๋ฉด, ์ด ์ „์Ÿ์€ 11์›” 1์ผ ~ 11์›” 3์ผ๊นŒ์ง€ ์ดํ‹€์— ๊ฑธ์ณ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋จธ๋ฆฌ๊ฐ€ ์•ˆ๋Œ์•„๊ฐ€์„œ ์ด๊ฑฐ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ์ž‘์—…ํ•˜๋‹ค๊ฐ€ ํ–ˆ๋‹ค.! ๐Ÿคฏ ์ง„์งœ ์ด๊ฑฐ์ฒ˜๋Ÿผ ๋จธ๋ฆฌ๊ฐ€ ํ„ฐ์กŒ์—ˆ์Œ ;; ๐Ÿงจ 1์ฐจ ์ „์Ÿ ๋ฐœ๋ฐœ - button์˜ width๋Š” ์–ด๋–ป๊ฒŒ ์„ค์ •ํ•˜๋Š”๊ฑฐ๋ƒ๊ณ  ; 1๏ธโƒฃ UIButton์€ incristic? content ์‚ฌ์ด์ฆˆ๋ฅผ ๋”ฐ๋ผ์„œ width์™€ hegith๊ฐ€ ์ž๋™์œผ๋กœ ๊ฒฐ์ •๋˜๋Š”๋ฐ ์™œ ์ด๋ ‡๊ฒŒ ๋‚˜์˜ค๋Š”๊ฑฐ์ง€? 1์ฐจ ์‹œ๋„ ์ธํ„ฐ๋„ท์—์„œ ๋ฒ„ํŠผ ํฐํŠธ์™€ ๋ฒ„ํŠผํฌ๊ธฐ๋ฅผ ๋งž์ถ”๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธ€์„ ๋ดค๋Š”๋ฐ, ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์•Œ๋ ค์ฃผ๋”๋ผ๊ณ ? self.titleLabel?.adjustsFontSizeToFitWidth = true ํ•˜์ง€๋งŒ ์ด ์ฝ”๋“œ๋Š”, ‘์ˆ˜์ •ํ•˜๋Ÿฌ๊ฐ€๊ธฐ’๋ผ๋Š” ํฐํŠธ๊ฐ€ ์ž‘์•„์ ธ๋ฒ„๋ฆฌ๋ฉด์„œ ๋ฒ„ํŠผ ๋‚ด๋ถ€๋กœ๋“ค์–ด์™€๋ฒ„๋ฆฐ๋‹ค… ใ…‚ใ„ทใ…‚ใ„ท๐Ÿ˜ก w..

[UIKit] Intrinsic Content Size๋ฅผ ๊ฐ–๋Š” view๋ฅผ ์•Œ์•„๋ณด์ž. (feat. ๊บผ์ผฏ์€ ์ง„๋ฆฌ๋‹ค)

๊ต‰์žฅํžˆ ํ™”๋‚˜๋Š” UILabel ์˜ Height is ambiguous ๋ณด๋ผ์ƒ‰ ์—๋Ÿฌ ๐Ÿ‘ฟ ์œ„ ์„ธ๊ฐœ ์ „๋ถ€ Height๋ฅผ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๊ณ  ๋ณด๋ผ์ƒ‰ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ๋‚˜๋Š” ๋ณด๋ผ์ƒ‰ ์—๋Ÿฌ๊ฐ€ ๊ทธ๋ ‡๊ฒŒ ํ™”๊ฐ€๋‚˜๋”๋ผ๊ณ !! ๋ทฐ๊ฐ€ ๊นจ์ง€๋ฉด ๋งŒ๋“ค์งˆ ๋ง์•„์•ผ์ง€ ์™œ ๋งŒ๋“ค์–ด์ง€๊ธด ํ•˜๋Š”๊ฑฐ์•ผ?? **Autolayou**t์€ ์ด๋ ‡๊ฒŒ ์ฃผ์—ˆ๋‹ค. UILabel์€ ๋‚ด๊ฐ€ contents์— ๋„ฃ๋Š” ๊ธธ์ด๋งŒํผ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋˜๋Š”๊ฒŒ ์•„๋‹Œ๊ฐ€? ์ผ๋‹จ ๊ฐ€๋กœ์„ธ๋กœ๋ฅผ ์ •ํ•ด์ฃผ์ง€ ์•Š์•˜๊ณ , UIView ๊ฐ€์šด๋ฐ์— ์ •๋ ฌํ•ด์ค˜์•ผํ•ด์„œ centerX๋ฅผ ์žก์•„์ฃผ์—ˆ๋‹ค. ํ ,, ๊ทธ๋ƒฅ ๋†’์ด๋ฅผ ์ฃผ๋ฉด ๋˜๋Š”๊ฑฐ ์•„๋‹ˆ์•ผ? ์™œ ๊ฐ€๋กœ์„ธ๋กœ๋ฅผ ์žก์•„์ฃผ์ง€ ์•Š์•˜๋ƒ๊ณ ? ๐Ÿ™Œ๐Ÿป UILabel์€ Intrinsic Content Size ๋ฅผ ๊ฐ€์ง„๋‹ค๊ณ  ํ•œ๋‹ค. Intrinsic Content size ๋ž€? UILabel์€ Label์•ˆ..

[UIKit] UILabel์— corenrRadius๋ฅผ ์ ์šฉํ•  ๋•Œ ์ˆ˜ํ•™๊ณ„์‚ฐ์„ ํ•ด์ค˜์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ๊ณ„์…จ์Šต๋‹ˆ๊นŒ!๐Ÿค” (clipToboudns, masksToBounds์ฐจ์ด์ )

์šฐ์„  Radius๊ฐ€ ๋จนํžˆ์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ด์„œ ๊ทธ๊ฒƒ ๋ถ€ํ„ฐ ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ–ˆ๋‹ค. CornerRadius๊ฐ€ ์•ˆ๋จนํž๋•Œ ์ด ๋ฐฉ๋ฒ•์„ ์จ๋ณด์ž. ๐Ÿคฏ ๋‚˜๋Š” ์ง€๊ตผ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ชจ์–‘์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘ let newsCategoryLabel: UILabel = { let newsCategoryLabel = UILabel() newsCategoryLabel.textAlignment = .center newsCategoryLabel.font = .font(.bold, ofSize: 12) newsCategoryLabel.layer.cornerRadius = 20 newsCategoryLabel.backgroundColor = .white // TODO: - ์นดํ…Œ๊ณ ๋ฆฌ์— ์ ์ ˆํ•œ ์ƒ‰์ƒ์„ ๋„ฃ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. newsCategoryLab..

[UIKit] ์ฝ”๋“œ๋ฆฌ๋ทฐ์˜ ํ•˜๋ฃจ,, (lineBreakStrategy, lineBreakMode, isUserInteractionEnabled(), isOpaque(), scrollToRow(), needsDisplayOnBoundsChange)

์˜ค๋Š˜์€ ์ง‘์ค‘์ด ์ž˜ ์•ˆ๋˜๋Š” ๋‚ ์ด์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด ๋ทฐ๋ฅผ ์งœ๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์˜ฌ๋ผ์™€ ์žˆ๋Š” PR์— ๋Œ€ํ•ด ์ฝ”๋“œ๋ฆฌ๋ทฐํ•˜๋Š๋ผ ๋ฐ”๋นด๋˜ ๋‚ ์ด๋‹ค. ์ฝ”๋“œ๋ฆฌ๋ทฐ๊ฐ€ ๋ฐ€๋ฆฌ๊ธฐ๋„ ํ–ˆ๊ณ ,,,, ์šฐ๋ฆฌํŒ€์›๋“ค์˜ ์ฝ”๋“œ๋Š” ์ฐธ ๋ฐฐ์šธ๊ฒŒ ๋งŽ๋‹ค!๐Ÿ‘ ๋„๋Œ€์ฒด ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ์–ผ๋งˆ๋‚˜ํ•˜๊ธธ๋ž˜ ๋ช‡์‹œ๊ฐ„์ด ๊ฑธ๋ ค? ์ด๋งŒํผ...์˜ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ–ˆ๋‹ค๋ฉด ๋ฏฟ๊ฒ ๋Š”๊ฐ€ ์œผํ•˜ํ•˜ํ•˜ํ•ณ์•„ใ…กํ•˜ํ•˜ํ•ณํ•˜ใ…ใ…Žํ•˜ใ…ํ•˜ ์žฌ๋ฐŒ๋”ฐ! ๊ทธ๋ž˜๋„ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ๋Œ€์ถฉ ๊ฐ€์ ธ๊ฐˆ์ˆ˜๋Š” ์ ˆ๋Œ€ never naver ์•ˆ๋˜๋‹ˆ๊นŒ,,, ์ตœ๋Œ€ํ•œ ์ •์„ฑ๋“ค์—ฌ์„œ ํ–ˆ๋‹ค. ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋ฉด ํ•  ์ˆ˜๋ก, ํŒ€์›๋“ค์˜ ์ปจ๋ฒค์…˜์ด ์ ์  ๋งž์•„๊ฐ€๊ณ , ํ•œ๋ช…์ด ์ง  ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์ง€๊ธˆ ์‹œ์ž‘ํ•œ์ง€ ์ผ์ฃผ์ผ ๋๋Š”๋ฐ ๋ฒŒ์จ ์ด๋ ‡๊ฒŒ ๋งž์ถฐ์ง€๊ณ  ์žˆ์œผ๋‹ˆ! ๊ฒฐ๊ตญ ์ž˜ํ•˜๋Š” ์‚ฌ๋žŒ ํ•œ ๋ช…์˜ ์ฝ”๋“œ๋ฅผ ์œ„์ฃผ๋กœ ๋”ฐ๋ฅด๊ฒŒ ๋˜๋Š” ๊ฑฐ ๊ฐ™๊ธดํ•˜๋‹ค. ๋‚˜์ค‘์—” ๋‚ด๊ฐ€ ๋ฆฌ๋“œํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋”ฐ! ๋ถ€๊ฐ€์ ์ธ ์ด์•ผ..

[UIKit] @available ์–ด๋…ธํ…Œ์ด์…˜์— ๋Œ€ํ•ด์„œ, ๊ทธ๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ required init(coder: ) ๋Œ€์ฒ˜๋ฒ•(?)

์˜ค๋Š˜์€ ์ฃผ๋ง์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋งŽ์€ ๋ทฐ๋ฅผ ๋งŒ๋“ค์ง€๋Š” ์•Š์•˜๊ณ  ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๊ณ , ๋ชฐ๋ž๋˜๊ฒƒ์„ ์•Œ์•„๊ฐ€๋Š”๋ฐ ์ง‘์ค‘ํ–ˆ๋‹ค. ๊ทธ์ค‘ ์˜ค๋Š˜ ์ธ์ƒ๊นŠ์—ˆ๋˜ ๋‚ด์šฉ์„ ์ ์–ด๋ดค๋‹ค. ๐Ÿค” @available?? ์ž์ฃผ๋ณด๊ธดํ–ˆ๋Š”๋ฐ, ์ด๊ฒŒ ๋ญ์ง€? ์ฝ”๋“œ๋ฅผ๋ณด๋ฉด, @๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ž์ฃผ ๋ณด๊ณคํ•œ๋‹ค. @main ๋„ ์žˆ๊ณ , @available๋„ ์žˆ๊ณ ,, #available๋„ ์žˆ๊ณ ! 1๏ธโƒฃ @available์„ ์–ด๋””์„œ ๋ดค์–ด? ๋Œ€์ถฉ ์•Œ๊ธฐ๋กœ๋Š” @available์€ ios ๋ฒ„์ ผ์— ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ• ๋•Œ ๋งŽ์ด ์ผ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. @available(iOS 12, *) func solution() { } @available ๋Š” ํด๋ž˜์Šค ๋˜๋Š” ํ”„๋กœํ† ์ฝœ ์•ž์— ๋†“์ธ๋‹ค๊ณ  ํ•œ๋‹ค. ํƒ€์ž… ๋˜๋Š” ํ”„๋กœํ† ์ฝœ์ด ์ ์šฉ๋˜๋Š” ํ”Œ๋žซํผ ๋ฐ OS๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋‹ค. #available๊ณผ ๋‹ค๋ฅด๊ฒŒ, ์ปดํŒŒ์ผํƒ€..

[UIKit] UICollectionView ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๋Š” cell์˜ ๊ทœ์น™(?)์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์‹œ์ž‘ํ•˜๋ฉฐ TMI ์„ค๋ช… ์ง€๊ธˆ์€ ์• ํ”Œ ๋””๋ฒจ๋กœํผ ์•„์นด๋ฐ๋ฏธ์—์„œ ๋งจ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. ๋งˆ์ง€๋ง‰์ธ ๋งŒํผ ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„์ด 3๋‹ฌ์ •๋„๋กœ ์ข€ ๊ธด ํŽธ์ด๊ณ , ๊ทธ ๊ธฐ๊ฐ„๋™์•ˆ ํŒ€์›๋“ค๊ณผ ๊ธฐํš + ๋””์ž์ธ + ๊ฐœ๋ฐœ ๊นŒ์ง€ ๋ชจ๋‘ ์™„๋ฃŒํ•ด์•ผํ•œ๋‹ค. ํƒ€ ๋ถ€ํŠธ์บ ํ”„์™€ ์ฐจ์ด์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ์ ์€, ์• ํ”Œ ๋””๋ฒจ๋กœํผ ์•„์นด๋ฐ๋ฏธ์— ์žˆ์œผ๋ฉด '๊ธฐํš๋ ฅ'์ด ์˜ฌ๋ผ๊ฐ€๊ณ , ์“ธ๋ชจ์žˆ๋Š” ์•ฑ ๋Œ€ํ•ด์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•˜๊ฒŒ ๋œ๋‹ค. ์ฃผ๋ณ€ ํŒ€๋“ค์˜ ์•„์ด๋””์–ด๋งŒ ๋ด๋„, ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌํŒ€์˜ ์•„์ด๋””์–ด๋งŒ ๋ด๋„ ๊ทธ๋ƒฅ ํ•™์ƒ ์ˆ˜์ค€์˜ ํ”„๋กœ์ ํŠธ๋Š” ํ•˜๊ณ ์‹ถ์ง€ ์•Š๋‹ค๋Š” ์˜์ง€๊ฐ€ ๊ฐ•ํ•˜๊ณ , ์‹ค์ œ๋กœ ๊ณ ๊ฐ ์œ ์น˜์— ์„ฑ๊ณตํ•  ๊ฒƒ ๊ฐ™์€ ์•ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ ํž˜์„ ์Ÿ๋Š”๋‹ค. ๋ชจ๋‘๊ฐ€ ์•„์ฃผ ๋นจ๊ฐ„ ์—ด์ •์‚ฌ๊ณผ์ด๋‹ค ๐ŸŽ ์šฐ๋ฆฌ ํŒ€์€, ์šฐ์„  'EDUTECH'๋ฅผ ๋Œ€์ฃผ์ œ๋กœ ์‚ผ๊ณ , narrow down ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๐Ÿค” ๋ฌด์—‡์„..

[UIKit] extension์œผ๋กœUILabel์˜ ํ–‰๊ฐ„๊ณผ ์ž๊ฐ„์„ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•

์ง€๊ธˆ ์• ํ”Œ ๋””๋ฒจ๋กœํผ ์•„์นด๋ฐ๋ฏธ์—์„œ ๋งˆ์ง€๋ง‰ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์ด๋‹ค. ์šด์ด ์ข‹๊ฒŒ๋„, ์ •๋ง ํ•˜๊ณ ์‹ถ์€ ํŒ€์›๊ณผ ํŒ€์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ์ค‘์—์„œ ๊ฐ€์žฅ ๊ฐ™์ด ๊ฐœ๋ฐœ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๊ณ ์‹ถ์—ˆ๋˜,, ์†Œ๋ฌธ๋‚œ '๊ฐ“๋“€'์™€ ํ•จ๊ป˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ฐœ๋ฐœ์ ์ธ ์ธก๋ฉด, ๊ทธ๋ฆฌ๊ณ  ์†Œํ†ตํ•˜๋Š” ๋ฐฉ์‹, ๊ฐœ๋ฐœ์ฒ ํ•™ ๋“ฑ์—์„œ ์ •๋ง ๋ฐฐ์šธ๊ฒŒ ๋งŽ์•˜๋‹ค. ์˜ค๋Š˜๋ถ€ํ„ฐ ๊ฐ“๋“€๋กœ๋ถ€ํ„ฐ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ •๋ฆฌํ•ด๋‚˜๊ฐ€๊ณ , ์˜จ์ „ํžˆ ๋‚˜์˜ ๊ฒƒ์ด ๋  ์ˆ˜ ์žˆ๋„๋ก ๊ธ€์„ ๊พธ์ค€ํžˆ ์ž‘์„ฑํ•  ๊ฒƒ์ด๋‹ค. https://github.com/DeveloperAcademy-POSTECH/MacC-Team-EarthValley80 GitHub - DeveloperAcademy-POSTECH/MacC-Team-EarthValley80: ์—๋“€ ํ…Œํฌ ๋ฌธ์˜๋Š” ์ธ์Šคํƒ€(@earthvalley80) DM ์ฃผ์„ธ์š”๐Ÿ™ ์—๋“€ ํ…Œํฌ ๋ฌธ์˜..

[UIKit] ์™œ ์•ˆ๋– ? ๋งŒ๋“  View๊ฐ€ ์•ˆ๋– ์š”. (๋ ˆ์ด์•„์›ƒ์ด ๊นจ์งˆ๋•Œ ์ฝ˜์†”์ฐฝ ์‚ดํŽด๋ณด๋Š” URL ์ด ์žˆ๋‹ค?!)

๐Ÿ“ฑ CollectionView๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ์™œ ์•ˆ๋– ? Code base๋กœ ๊ฐœ๋ฐœํ•  ๋•Œ ํ•ญ์ƒ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ, (์•„์ง ๋ฏธ์ˆ™ํ•œ ๊ฐ์ž๋ผ์„œ ํ•ญ์ƒ,,,์ƒ๊ธฐ๊ณคํ•œ๋‹ค. ์–ธ์ œ์ฏค ๊ณ ์ˆ˜๊ฐ์ž๊ฐ€ ๋  ์ˆ˜ ์žˆ์„๊นŒ!) View๊ฐ€ ์•ˆ๋œฐ๋•Œ ์ฝ˜์†”์ฐฝ์„ ์‚ดํŽด๋ด์•ผํ•œ๋‹ค๋Š” ์ ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. (์ฝ˜์†”์ฐฝ ์–ด๋ ต๊ฒŒ ์ƒ๊ฒผ์–ด,,) ์ง€๊ธˆ์€ CollectionView๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๋ฐ ๋ทฐ๊ฐ€ ์•ˆ๋“œ๊ณ  ์žˆ๋‹ค. hierarchy๋ฅผ ์‚ดํŽด๋ณด์•„๋„ ๋œจ์ง€ ์•Š๋Š”๋‹ค! (์•„์ดํŒจ๋“œ์ž„) ๋‚ด๊ฐ€ ์“ด collectionview์˜ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. private func configureCollectionView() { collectionView.delegate = self collectionView.dataSource = self collectionView.register(DynamicColl..

[UIKit] BaseViewController๋ฅผ ์‚ฌ์šฉํ•ด๋ณด์ž. (์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ ๋†’์ด๊ธฐ, ์ค‘๋ณต ์ค„์ด๊ธฐ)

์ƒˆ๋กœ์šด ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๊ฑฐ๊ธฐ์„œ ์‚ฌ์šฉํ•ด๋ณผ BaseViewController์— ๋Œ€ํ•ด์„œ ๊ธ€์„ ์ž‘์„ฑํ•ด๊ฒ ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‚ด๊ฐ€ ํ•ด๋ณด์ง€ ์•Š์•˜๋˜ ๊ฒƒ๋“ค์„ ์กฐ๊ธˆ์”ฉ ๋„์ „ํ•ด๋ณด๋ฉด์„œ ๋งŒ๋“ค์–ด๋ณผ ์˜ˆ์ •์ด๋‹ค... ๊ทธ๋Ÿฐ๋ฐ ์กฐ๊ธˆ ๊ฐœ๋ฐœ ๊ธฐ๊ฐ„์ด ์ด‰๋ฐ•...ํ•ด์„œ...๊ฑฑ์ •์ด ...,,, ์”... ๐ŸŸ  BaseViewController๋ž€? BaseViewController๋Š” ์ปค์Šคํ…€ ๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ UIKit์œผ๋กœ ๋ทฐ๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด UIViewController๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ๋˜๋Š”๋ฐ, ์ด UIViewController๋Œ€์‹  ๋‚ด๊ฐ€ ๋งŒ๋“  BaseViewController๋ฅผ ์ƒ์†๋ฐ›๊ฒŒ ํ•˜๋ฉด๋œ๋‹ค.! ๊ทธ๋ž˜์„œ ์›๋ž˜๋Š” makeview

[Error] fatalError("Expected superview but found nil when attempting make constraint `equalToSuperview`.")

์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ. ์ธํ„ฐ๋„ท์„ ์ฐพ์•„๋ณด๋‹ˆ๊นŒ addsubView๋ฅผ ์•ˆํ•ด์„œ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ์ธ๊ฒƒ ๊ฐ™์€๋ฐ, ๋‹ค์‹œ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด์„œ ํ•ด๊ฒฐํ•ด๋ณด์ž. ๋„๋Œ€์ฒด ์–ด๋””์„œ ๋ฌธ์ œ๊ฐ€ ๋‚˜๋Š”๊ฒƒ์ธ๊ฐ€? (์•„๋ฌด๋ฆฌ ๋ด๋„ addsubview์•ˆํ•œ ๋ถ€๋ถ„์ด ์—†์Œ.. ์•„๋ฌด๋ž˜๋„ add๋Š” ๋‹ค ํ•ด์คฌ์ง€๋งŒ ๊ทธ ์‚ฌ์ด์— ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋’ค๋ฐ”๋€Œ๊ฑฐ๋‚˜ ๋“ฑ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒƒ..๊ฐ™..ใ…‡.ใ…ก.ใ„ด..ใ….... ใ… ) ๐Ÿ”ต ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ฒ„ํŠผ์„ ๋„ฃ์–ด์ฃผ์–ด์•ผํ•ด์„œ switch๋ฌธ์„ ์ด์šฉํ•ด์„œ func์„ ๋„ฃ์–ด์คŒ extension HomeCellListCell { func setupViews() { [listImageView, subTitle, title].forEach { addSubview($0) } listImageView.snp.makeConstraints {..

๋ฐ˜์‘ํ˜•