๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ 120

[ iOS ] scrolling ์‹œ ํ‚ค๋ณด๋“œ ๋‚ด๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ฉฐ Delegate ํŒจํ„ด ์ดํ•ด

View์™€ ViewController๋ทฐ๋Š” ํ™”๋ฉด์— ๋ณด์ด๋Š” ๊ฒƒ์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ ์‚ฌ์šฉ์ž์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ์†Œํ†ต์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ์ € ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ค ๋ชจ์Šต์œผ๋กœ ๋ณด์ผ์ง€ ๋˜๋Š” ์‚ฌ์šฉ์ž์˜ ๋™์ž‘(select)์„ ๋ฐ›์•„๋“ค์ด๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๊ธฐ๋Šฅ์„ ๋งก์„ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.๋ทฐ ์ปจํŠธ๋กค๋Ÿฌ๋Š”, ๋ทฐ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•œ ๊ฒƒ๋“ค์„ ๋ฐ›์•„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๊ฑฐ๋‚˜ ๋™์ž‘(select)์— ๋Œ€ํ•œ ๋ฐ˜์‘์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ„ฐ์น˜๋  ๋•Œ ๋˜๋Š” ์Šฌ๋ผ์ด๋“œ๋  ๋•Œ ๋“ฑ ๋ทฐ๊ฐ€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ๋ฐ›๋Š” ์—ฌ๋Ÿฌ ์‹œ์ ์„ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹œ์ ์— ์ ์ ˆํ•œ ์ž‘์—…์„ ํ•˜๋Š” ๊ฒƒ์ด ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ทฐ๋ฅผ ์•Œ์•„์•ผ ํ•˜์ง€๋งŒ, ๋ทฐ๋Š” ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์•Œ์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ทฐ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ, ์ด๋ฅผ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ์•Œ๊ณ  ์ ์ ˆํ•œ ์‹œ์ ์— ์ ..

iOS 2025.01.23

[ Swift ] Class Singleton ๐Ÿ†š Struct Singleton

์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์€ ์†Œํ”„ํŠธ์›จ์–ด ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ, ๋‹จ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋งŒ์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.๋”ฐ๋ผ์„œ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋ฉด ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„๋งŒ ๊ณ„์† ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ , ์‚ฌ์šฉ ์‹œ ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ๋Š” ์ธ์Šคํ„ด์Šค ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๋„ ๋น ๋ฆ…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ „์—ญ์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋ฏ€๋กœ ์—ฌ๋Ÿฌ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ๋“ฑ์˜ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ ๋™์‹œ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ swift์—์„œ๋Š” ์ดˆ๊ธฐํ™” ์‹œ์ ์„ ๋ฏธ๋ฃฌ(lazily) static ํ”„๋กœํผํ‹ฐ๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ thread-safetyํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.The free function dispatch_once is no longer available in Swift. In Swift, you can use la..

Swift 2025.01.10

[ iOS ] UICollectionViewCell์—์„œ ImageView ์ดˆ๊ธฐํ™” ์‹œ์ ๊ณผ awakeFromNib()

์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ImageView๋ฅผ ๋ฐฐ์น˜ํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์žˆ๋‹ค๊ณ  ํ•ฉ์‹œ๋‹ค. ๋ชจ์„œ๋ฆฌ์— ๋‘ฅ๊ทผ ํšจ๊ณผ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์Šคํ† ๋ฆฌ๋ณด๋“œ๋งŒ์œผ๋กœ๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋“œ์—์„œ UIView.layer.cornerRadius๋ฅผ ์ ์šฉํ•ด ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ณดํ†ต ์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ฝ”๋“œ๋Š” ํ•จ๊ป˜ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.UIViewController์—์„œ๋Š” ์•„์›ƒ๋ › ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ๋•Œ ๋ณดํ†ต viewDidLoad ๋‚ด๋ถ€์— ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ UICollectionViewCell์—์„œ ์•„์ดํ…œ์œผ๋กœ ๋‘ฅ๊ทผ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ฐ€์ง„ ImageView๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋””์— ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?  ๋จผ์ € ์ด๋‹ˆ์…œ๋ผ์ด์ €๋ถ€ํ„ฐ ์ƒ๊ฐํ•ด๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. UIView์˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €๋Š” ๋‘ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.init(frame:)init(coder:)์Šคํ† ๋ฆฌ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•ด UI๋ฅผ..

iOS 2025.01.08

[ Swift ์‹œํ–‰์ฐฉ์˜ค ] ๊ตฌ์กฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ด ๋ชจ๋ธ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ (ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•)

๋ฐฐ๊ฒฝ์Šคํ† ๋ฆฌ๋ณด๋“œ๋กœ table view ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋˜ ์ค‘ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ table view์— ๋“ค์–ด๊ฐˆ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์กฐ์ฒด๋กœ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ชจ๋“  ์ฝ”๋“œ์—” ์ด์œ ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์Šตํ•œ ์ฝ”๋“œ๋ฅผ ๋‘๊ณ  ์™œ ์ด๋ ‡๊ฒŒ ์ฝ”๋”ฉํ–ˆ์„๊นŒ ์ƒ๊ฐ์„ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.   ํ™”๋ฉด ์ดํ•ด ๋ฐ ์ฝ”๋“œ ๋ณด๊ธฐํœด๋Œ€ํฐ์˜ ์„ค์ • ํ™”๋ฉด์ฒ˜๋Ÿผ table view controller์— ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ ์‚ฝ์ž…ํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค.  3๊ฐœ์˜ ๋Œ€๋ถ„๋ฅ˜์™€ ๊ทธ ์•„๋ž˜ ์†Œ๋ถ„๋ฅ˜ title์ด ์žˆ์–ด ๊ฐ ์„น์…˜ ๋ณ„๋กœ ํ•ด๋‹นํ•˜๋Š” ํ•ญ๋ชฉ์„ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.import UIKitclass TableViewController: UITableViewController { override func viewDidLoad() { ..

728x90