๐ŸŽ iOS & Swift

ยท๐ŸŽ iOS & Swift
Bundle Identifier ๋ฒˆ๋“ค ์•„์ด๋””(Bundle Identifier)๋Š” ์•ฑ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ฃผ๋ฏผ๋“ฑ๋ก๋ฒˆํ˜ธ์™€ ๊ฐ™์€ ์„ฑ๊ฒฉ์„ ๋ค๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ณ ์œ ํ•ด์•ผํ•˜๋‹ˆ๊นŒ ์ค‘๋ณต๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๊ณ  ์‹ค์ œ๋กœ ์ถœ์‹œ ์ „์— ์ค‘๋ณต ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜๊ฒŒ ๋œ๋‹ค. โœ… ์ค‘๋ณต๋œ Bundle Identifier๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œจ๊ณ  ๋นŒ๋“œ๊ฐ€ ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์ถœ์‹œ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ฐ€๋” ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ์ค‘๋ณต๋œ Bundle Identifier๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค๊ฐ€ ๋นŒ๋“œ๊ฐ€ ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋ฅผ ๋งŒ๋‚˜๊ณ ๋Š” ํ•œ๋‹ค. ํ”์น˜๋Š” ์•Š์€ ์ผ์ด์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด ์ ์ ˆํ•˜๊ฒŒ Id๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. (์‹ค์ œ๋กœ SOPT ํ™œ๋™ ์‹œ ์„ธ๋ฏธ๋‚˜๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ Bundle Identifier๋ฅผ com.sopt.Project์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•œ ์ ์ด ์žˆ๋Š”๋ฐ, ์ด..
ยท๐ŸŽ iOS & Swift
๐Ÿชด์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ• ๊ตฌ๊ธ€๋ง์„ ํ•˜๋‹ค๋ณด๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œ๊ฐœ๋˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. layer๋ฅผ ๋‘ฅ๊ธ€๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ์ง€ ์•Š์œผ๋ฉด ๋„ค๋ชจ ๋ชจ์–‘์œผ๋กœ ์น ํ•ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋‘ฅ๊ธ€๊ฒŒ ๊นŽ์•„์ค˜์•ผ ํ•œ๋‹ค. switch.backgroundColor = .blue switch.layer.cornerRadius = switch.bounds.size.height / 2 (๋˜๋Š” 16) ๐Ÿชดํ•˜์œ„ ๋ทฐ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ• ์™œ backgroundColor๋ฅผ ๋ณ€๊ฒฝ์‹œํ‚ค๋ฉด ๋„ค๋ชจ ๋ชจ์–‘์œผ๋กœ ์น ํ•ด์งˆ๊นŒ์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐํ•ด๋ณด๋‹ค๊ฐ€ UISwitch์˜ ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ณ  ์‹ถ์–ด์„œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋œฏ์–ด๋ดค๋‹ค. ๋ณด๋‹ˆ๊นŒ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ƒ‰์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ทฐ๋ž‘ backgroundColor๊ฐ€ ์ ์šฉ๋˜๋Š” ๋ทฐ๋Š” ๊ณ„์ธต์ด ๋‹ค๋ฅธ ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๋‘ ๋ฒˆ์งธ ์ด๋ฏธ์ง€๊ฐ€ UISwitch์˜ backgroundColor๋งŒ ๋ณ€๊ฒฝ์‹œ์ผฐ์„ ๋•Œ์˜..
ยท๐ŸŽ iOS & Swift
What's new in SF Symbols 4 Explore the latest updates to SF Symbols, Apple's extensive library of iconography designed to integrate seamlessly with San Francisco, the system font for all Apple platforms. Discover the latest additions to the SF Symbols library and new categories in the app. Learn about the new Automatic behavior, which chooses the rendering mode that best highlights what's unique..
ยท๐ŸŽ iOS & Swift
๋“ค์–ด๊ฐ€๋ฉฐ โ˜€๏ธ ๊ธฐ์ดˆ ๋ฌธ๋ฒ• ๊ณต๋ถ€์˜ ํ•„์š”์„ฑ์„ ๋Š๊ปด์„œ ์ดˆ์‹ฌ์œผ๋กœ ๋Œ์•„๊ฐ€ ์กฐ๊ธˆ์”ฉ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ง€๊ธˆ ๊ณต๋ถ€ํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋‹จ์ˆœ ์ •๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๊ณ„์† ๊ณ ๋ฏผํ•˜๊ณ  ์—ฐ๊ตฌํ•˜๋Š” ์ž์„ธ๋ฅผ ๊ฐ€์ง€๋„๋ก ํ•˜์ž. ๊ธฐ์ดˆ๋Š” ๊ฐ€์žฅ ์‰ฌ์›Œ์„œ๊ฐ€ ์•„๋‹ˆ๋ผ ๊ฐ€์žฅ ์ค‘์š”ํ•ด์„œ ๊ทธ ์˜๋ฏธ๊ฐ€ ์žˆ์Œ์„ ๊นจ๋‹ซ์ž. if๋ฌธ ๐Ÿ™‹๐Ÿป‍โ™‚๏ธ ํŠน์ • ์กฐ๊ฑด์—์„œ๋งŒ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ์‹คํ–‰ํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๊ฑฐ๋‚˜ ํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์“ฐ์ธ๋‹ค. ๋ง ๊ทธ๋Œ€๋กœ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋‹ค ๋ณด๋ฉด ์ •๋ง ํ•„์ˆ˜์ ์œผ๋กœ ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์ˆ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š” ๋‚ด์šฉ์ด๋‹ค. ์ค‘์š”ํ•œ ๊ฑด if๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ switch-case๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ• ์ง€๋Š” ์ ..
ยท๐ŸŽ iOS & Swift
๐Ÿ’ฅ ์ธ์‚ฌ๋ง ์•ˆ๋…•ํ•˜์„ธ์š”, ํƒœ๋ผ์ž…๋‹ˆ๋‹ค ใ€ฐ ๐Ÿ‘‹ ๋‹ค์Œ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ๋Š” ๋ชจ๋ฅด๋Š” ๊ฐœ๋…์ด๋‚˜ ํ‚ค์›Œ๋“œ, ๋ฌธ๋ฒ• ๋“ฑ ๋‹ค์–‘ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‚ด์šฉ์€ ์ €์˜ ์ธ์Šคํƒ€ ๊ฐœ๋ฐœ ๋กœ๊ทธ ๊ณ„์ •(@taekki.dev)์—๋„ ์˜ฌ๋ผ๊ฐ€๋‹ˆ ๋งŽ์€ ๊ด€์‹ฌ ๋ถ€ํƒ๋“œ๋ ค์š” :) ๊ฐœ๋…์˜ ๋นˆ๊ณต๊ฐ„์„ ๋ฉ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ทธ๋‚ ๊นŒ์ง€ ํ™”์ดํŒ…ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์˜ค๋Š˜ ํฌ์ŠคํŒ… ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ™Œ ๐Ÿ’ฌ ๋“ค์–ด๊ฐ€๋ฉฐ UIWindow๋ฅผ ์ฒ˜์Œ ๋งˆ์ฃผํ•˜๊ฑฐ๋‚˜, ๊ฐ€์žฅ ๋งŽ์ด ๋ณด๋Š” ๊ณณ์ด ์–ด์ฉŒ๋ฉด SceneDelegate.swift ๋‚˜ AppDelegate.swift ์ผ์ง€๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ํ•ญ์ƒ ๊ฐ€๋ณ๊ฒŒ ์ง€๋‚˜์น˜๊ธฐ๋งŒ ํ–ˆ๋˜ UIWindow๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ด๋ฒˆ์— ์•Œ์•„๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ Apple ๊ณต์‹๋ฌธ์„œ์˜ ๊ตฌ์กฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๐ŸŒฑ UIWindow์˜ ํƒ€์ž… ๐Ÿ“Œ ํƒ€์ž…(Type) - ํด๋ž˜์Šค ํƒ€์ž…์€ ํด๋ž˜์Šค(Cl..
ยท๐ŸŽ iOS & Swift
๐Ÿ’ญ ๋“ค์–ด๊ฐ€๋ฉฐ ๋ชจ๋“  UI ์š”์†Œ์˜ ํฌ๊ธฐ๊ฐ€ ๋™์ผํ•˜๋ฉด ์–ผ๋งˆ๋‚˜ ์ข‹์„๊นŒ์š”? ํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๊ฒŒ ๋˜์ฃ  ๐Ÿฅฒ ํŠนํžˆ๋‚˜ ์ปจํ…์ธ ์˜ ์‚ฌ์ด์ฆˆ์— ๋”ฐ๋ผ์„œ UI ์ปดํฌ๋„ŒํŠธ์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•ด์ฃผ๋Š” ์ƒํ™ฉ์€ ๊ฝค๋‚˜ ์ž์ฃผ ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ CollectionView๋Š” ๋‹จ๊ณจ ์†๋‹˜์ž…๋‹ˆ๋‹ค. CollectionView ์ž์ฒด์˜ ๋†’์ด๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ์ƒํ™ฉ์ด๋‚˜, CollectionView Cell์˜ ๋„ˆ๋น„๋‚˜ ๋†’์ด๋ฅผ ์กฐ์ ˆํ•˜๋Š” ์ƒํ™ฉ์„ ์˜ˆ๋กœ ๋“ค ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”! โœจ ์˜ค๋Š˜์€ CollectionView Cell์˜ ๋„ˆ๋น„๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค ใ€ฐ ๐Ÿ“บ ์š”๊ตฌ์‚ฌํ•ญ ์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ˜„ํ•ด์•ผํ•  ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์•„์š”. ๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค ์˜์—ญ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ ์˜์—ญ์ด ํ…์ŠคํŠธ ๊ธธ์ด์— ๋งž๊ฒŒ ๋™์ ์œผ๋กœ ์กฐ์ ˆ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šค..
ยท๐ŸŽ iOS & Swift
๐Ÿ’ฅ ์ƒˆ๋กœ์šด ์‹œ์ž‘ ์•ˆ๋…•ํ•˜์„ธ์š”, ํƒœ๋ผ์ž…๋‹ˆ๋‹ค ใ€ฐ ๐Ÿ‘‹ ๋ธ”๋กœ๊ทธ์— ์ƒˆ๋กœ์šด ์นดํ…Œ๊ณ ๋ฆฌ๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค ใ€ฐ (์•ผํ˜ธ) ๋ญ๋ƒ๊ตฌ์š”? ๋ฐ”๋กœ 'โœจ iOS๋ฅผ ์œ„ํ•œ ๊ฐœ๋… ์™์™' ์นดํ…Œ๊ณ ๋ฆฌ์ธ๋ฐ์š” ใ€ฐ ๊ณต๋ถ€๋ฅผ ํ•˜๋‹ค๋ณด๋ฉด ๊ฐ€๋”์”ฉ(๋งจ๋‚ ) ๋ชจ๋ฅด๋Š” ๊ฐœ๋…์ด๋‚˜ ํ‚ค์›Œ๋“œ, ๋ฌธ๋ฒ• ๋“ฑ์ด ๋‚˜์˜ค๋Š”๋ฐ ๊ทธ๋Ÿฐ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‚ด์šฉ์€ ์ €์˜ ์ธ์Šคํƒ€ ๊ฐœ๋ฐœ ๋กœ๊ทธ ๊ณ„์ •(@taekki.dev)์—๋„ ์˜ฌ๋ผ๊ฐ€๋‹ˆ ๋งŽ์€ ๊ด€์‹ฌ ๋ถ€ํƒ๋“œ๋ ค์š” :) ์ด๊ฑด TMI์ธ๋ฐ ์ˆซ์ž ์ธ๋ฑ์‹ฑ์ด ์„ธ ์ž๋ฆฌ์ˆ˜์ฃ !? ์„ธ ์ž๋ฆฌ์ˆ˜๊นŒ์ง€ ํฌ์ŠคํŒ… ํ•  ๊ทธ ๋‚ ์„ ์œ„ํ•จ์ด๋ผ๋Š”... ๋ญ ๊ทธ ๋‚  ์ฏค ๋˜๋ฉด ์‹ค๋ ฅ์ด ์กฐ๊ธˆ์€ ๋Š˜์–ด์žˆ๊ฒ ๋„ค์š”(ํ•˜ํ•˜) ๊ทธ๋Ÿผ ์˜ค๋Š˜ ํฌ์ŠคํŒ… ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ™Œ ๐Ÿ’ฌ ๋“ค์–ด๊ฐ€๋ฉฐ typealias์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•˜๋˜ ์ค‘์— ‘์„œ๋ธŒํด๋ž˜์‹ฑ์—†์ด ์ปค์Šคํ…€ ํƒ€์ž…์˜ ๋ฐฐ์—ด์„ ์ •์˜ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๋‹ค’ ์š”๋Ÿฐ ์ด์•ผ๊ธฐ๊ฐ€ ๋‚˜์™€์„œ ์„œ๋ธŒํด๋ž˜์‹ฑ..
ยท๐ŸŽ iOS & Swift
๐Ÿ˜€์˜ค๋Š˜์€ ๊ฐ„๋‹จํ•˜๊ฒŒ Delegate Pattern์„ ์ ์šฉํ•ด๋ณด๋Š” ์˜ˆ์‹œ ์ค‘์—์„œ ํ™”๋ฉด ์ „ํ™˜ ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด์•„๋ณด๋‚ด๋Š” ์ž‘์—…์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿง‘๐Ÿป‍๐Ÿ’ป ๋“ค์–ด๊ฐ€๋ฉฐ Delegate Pattern(๐Ÿ˜‡? ๐Ÿ˜ˆ??), ํ•ญ์ƒ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๊ทธ ์ˆœ๊ฐ„์—๋Š” ์ดํ•ดํ–ˆ๊ณ  ๋ถ„๋ช… ์•Œ๊ฒ ๋Š”๋ฐ ๋„๋Œ€์ฒด ์–ด๋Š ๋ถ€๋ถ„์— · ๋˜ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ฐ์ด ์•ˆ ์žกํž™๋‹ˆ๋‹ค... ์ € ์—ญ์‹œ๋„ ๊ทธ๋Ÿฐ๋ฐ์š”... ์–ด์ฉ” ์ˆ˜ ์—†์–ด์š”... ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ์จ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ•ด๋ณด๋Š” ์ˆ˜ ๋ฐ–์— ์ด๋ฒˆ์— ์ตœ๋Œ€ํ•œ ์—ฌ๋Ÿฌ ์ƒํ™ฉ์— ์‚ฌ์šฉํ•ด๋ณด๋ฉด์„œ ์–ด๋–ค ์žฅ๋‹จ์ ์ด ์žˆ๋Š”์ง€๋„ ์•Œ์•„๋ณด๊ณ  ์‚ฌ์šฉ๋ฒ•์— ์ต์ˆ™ํ•ด์ง€๋ ค๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ™์ด ๋…ธ๋ ฅํ•ด๋ณด์•„์š”. ๐Ÿ“บ ์‹คํ–‰ ํ™”๋ฉด ์˜ค๋Š˜ ๊ตฌํ˜„ํ•ด ๋ณผ ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ํฌ๊ฒŒ ์ƒํ’ˆ ํ™”๋ฉด๊ณผ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋‹ด๊ธฐ ํ™”๋ฉด 2๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๊ตฌ์š”. ์šฐ์„  ํ๋ฆ„์„ ์„ค๋ช…ํ•ด๋“œ๋ฆด๊ฒŒ์š”. ์ƒํ’ˆ ํ™”๋ฉด์—์„œ ์žฅ๋ฐ”๊ตฌ๋‹ˆ ๋ฒ„ํŠผ์„ ํด..
taeeekki
'๐ŸŽ iOS & Swift' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (6 Page)