์ „์ฒด ๊ธ€ 118

[Swift] CLLocationManager

๊ถŒํ•œ ์„ค์ •ํ•˜๊ธฐ (info.plist)- ํ•„์š”ํ•œ ๊ถŒํ•œ๋งŒ ์„ค์ •ํ•˜๊ธฐ- ๊ถŒํ•œ์— ๋Œ€ํ•œ ํ•„์š”์„ฑ Description ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑํ•˜๊ธฐโœ”๏ธ Privacy - Location When In User Usage Descriptionforeground์—์„œ ์‹คํ–‰ ์ค‘์ผ ๋•Œ๋งŒ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11+ )โœ”๏ธ Privacy - Location Always and When In Use Usage Descriptionbackground์—์„œ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11+ )โœ”๏ธ Privacy - Location Always Usage Descriptionbackground์—์„œ ์•ฑ์ด ์œ„์น˜ ์ •๋ณด์— ์—‘์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ( iOS 11- )โœ”๏ธ Privacy - Location D..

Swift/Xcode 2024.05.31

[Swift] UIButton Configuration

UIButton ConfigurationiOS 15๋กœ ์—…๋ฐ์ดํŠธ ์ดํ›„๋กœ UIButton์„ ์ •์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋‹ค์–‘ํ•ด์กŒ๋‹ค.์—…๋ฐ์ดํŠธ ๋œ ์Šคํƒ€์ผ์„ ์ฑ„ํƒํ•˜์—ฌ ์ธํ„ฐํŽ˜์ด์Šค์™€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์–ด์šธ๋ฆฌ๋Š” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.๊ธฐ์กด์— UIButton์€ .setTitle / .setImage ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฒ„ํŠผ์˜ ๋ชจ์–‘์„ ๋””์ž์ธํ–ˆ์ง€๋งŒ,iOS 15์—์„œ ์ถ”๊ฐ€๋œ UIButton.Configuration์€ ๊ธฐ๋ณธ ๊ตฌ์„ฑ์„ ์กฐ๊ธˆ ๋” ์‰ฝ๊ณ , ๋‹ค์–‘ํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.configuration์€ ํฌ๊ฒŒ 4๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•  ๋•Œ, ๋ณด๊ณ  ๊ทธ๋ƒฅ ์ง€๋‚˜์ณค๋˜ ๋‹ค๋ฅธ ๋ฒ„ํŠผ๋“ค์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค.1. plain (๋ฐฐ๊ฒฝ์ด ํˆฌ๋ช…ํ•œ ๋ฒ„ํŠผ)static func plain() -> UIButton.Configuration→ Creates ..

Swift/Xcode 2024.05.30

[Swift] View Drawing Cycle

View Drawing CycleVeiw Drawing Cycle์ด ๋ฌด์—‡์ผ๊นŒ?view๊ฐ€ ๋กœ๋“œ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ, ํ™”๋ฉด์— ๊ทธ๋ ค์ง€๋Š” Cycle์„ ๋งํ•œ๋‹ค.view๊ฐ€ ๋กœ๋“œ ์‹œ, ์‹œ์Šคํ…œ์ด UIView์—๊ฒŒ draw ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋“œ๋กœ์ž‰์„ ์š”์ฒญํ•œ๋‹ค.๊ทธ๋ฆฌ๊ณ  ์Šค๋ƒ…์ƒท์„ ์บก์ณํ•˜์—ฌ UIView์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค.๊ทธ ๋‹ค์Œ ๋ทฐ์˜ ์ปจํ…์ธ  ๋ณ€๊ฒฝ ์‹œ ๊ด€๋ จ ๋ฉ”์„œ๋“œ๋“ค์„ ํ˜ธ์ถœํ•˜์—ฌ ์‹œ์Šคํ…œ์—๊ฒŒ ์š”์ฒญํ•œ๋‹ค.iOS์˜ ์ด๋ฒคํŠธ๋Š” ๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ์กด์žฌํ•˜๋Š” Run loop๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ๋œ๋‹ค.๊ทธ ์ค‘ Main Run loop๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ด๋ฒคํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.์ด Main Run loop์˜ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ 'Update Cycle'์ด๋ผ๋Š” ๊ฒƒ์ด ๋ฐœ์ƒํ•œ๋‹ค.์—ฌ๊ธฐ์„œ Layout(size, position), Display(color, text, image),..

Swift/Xcode 2024.05.28

[Swift] ํ”„๋กœํผํ‹ฐ(Property) โ‘  - ์ €์žฅ, ์—ฐ์‚ฐ

- ํ”„๋กœํผํ‹ฐ(Property) : ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด ๋˜๋Š” ์—ด๊ฑฐํ˜• ๋“ฑ์— ๊ด€๋ จ๋œ ๊ฐ’์„ ์˜๋ฏธ- ๋ฉ”์„œ๋“œ(Method) : ํŠน์ • ํƒ€์ž…์— ๊ด€๋ จ๋œ ํ•จ์ˆ˜ ํ”„๋กœํผํ‹ฐํ”„๋กœํผํ‹ฐ๋Š” ํฌ๊ฒŒ ์ €์žฅ ํ”„๋กœํผํ‹ฐ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ, ํƒ€์ž… ํ”„๋กœํผํ‹ฐ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.- ์ €์žฅ ํ”„๋กœํผํ‹ฐ(Stored Properties)- ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ(Computed Properties)- ํƒ€์ž… ํ”„๋กœํผํ‹ฐ(Type Properties)• ์ €์žฅ ํ”„๋กœํผํ‹ฐ- ์ธ์Šคํ„ด์Šค์˜ ๋ณ€์ˆ˜ ๋˜๋Š” ์ƒ์ˆ˜๋ฅผ ์˜๋ฏธ (๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ)• ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ- ๊ฐ’์„ ์ €์žฅํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํŠน์ • ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ์˜๋ฏธ (ํด๋ž˜์Šค, ๊ตฌ์กฐ์ฒด, ์—ด๊ฑฐํ˜•์— ์“ฐ์ผ ์ˆ˜ ์žˆ์Œ)• ํƒ€์ž… ํ”„๋กœํผํ‹ฐ- ํŠน์ • ํƒ€์ž…์— ์‚ฌ์šฉ๋˜๋Š” ํ”„๋กœํผํ‹ฐ (์ €์žฅ, ์—ฐ์‚ฐ ํ”„๋กœํผํ‹ฐ๋Š” ํŠน์ • ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ)- ํด๋ž˜์Šค ๋ณ€..

Swift 2024.05.28

[Swift] Delegate ํŒจํ„ด

Delegate Pattern Delegate ํŒจํ„ด์€ ๋””์ž์ธ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋กœ๋‹จ์–ด ๋œป ๊ทธ๋Œ€๋กœ '์œ„์ž„ํ•˜๋‹ค'์™€ ๊ฐ™์ด ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋ชจ๋“  ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์ž์‹ ์˜ ์ผ์„ ์œ„์ž„ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋””์ž์ธ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.1. ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค.2. ํ”„๋กœํ† ์ฝœ์— ํ•„์š”ํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ๋ช…์‹œ๋˜์–ด ์ „๋‹ฌ๋œ๋‹ค.3. ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์ผ์˜ ์ผ๋ถ€๋ฅผ ๋‹ค๋ฅธ ๊ฐ์ฒด์—๊ฒŒ ์œ„์ž„ํ•  ์ˆ˜ ์žˆ๋‹ค.์ง€๊ธˆ๊นŒ์ง€ ์•ฑ์„ ๋งŒ๋“ค๋ฉด์„œ, ์•Œ๊ฒŒ ๋ชจ๋ฅด๊ฒŒ ์—ฌ๋Ÿฌ Delegate ํ”„๋กœํ† ์ฝœ์ด ์žˆ์—ˆ์„ ๊ฒ๋‹ˆ๋‹ค.(UITableViewDelegate, UITextFieldDelegate, ๋“ฑ๋“ฑ..)tableViewController๋„ command๋กœ ๋ˆŒ๋Ÿฌ๋ณด๋ฉด, UITableViewDelegate๋ฅผ ์ฑ„ํƒํ•˜์—ฌ ํ”„๋กœํ† ์ฝœ์„ ์ค€์ˆ˜ํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด..

Swift/Xcode 2024.05.26

[Swift] UserDefaults

์ž‘์€ ํ”„๋กœ์ ํŠธ๋“ค์„ ๋งค์ผ ํ•˜๋‚˜์”ฉ ๋งŒ๋“ค๋ฉด์„œ,UserDefaults๋กœ ์•ฑ์ด ์ข…๋ฃŒ๋˜์–ด๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ๋„๋ก๊ณ„์† ์ €์žฅ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค.ใ…Žใ…Ž์•„์ง ์ต์ˆ™ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ,์ •๋ฆฌํ•˜๋ฉด์„œ ํ™•์‹คํžˆ ๊ธฐ์–ตํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!โ˜บ๏ธ UserDefaults๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.๊ทธ ์ค‘ UserDefaults๋Š” ๋‹จ์ผ ๋ฐ์ดํ„ฐ ๊ฐ’(๊ฒฝ๋Ÿ‰)์„ ์ €์žฅํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค!์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ž๋™ ๋กœ๊ทธ์ธ ์—ฌ๋ถ€, ์•Œ๋ฆผ ์ˆ˜์‹  ์—ฌ๋ถ€, ๊ฒฐ์ œ ์—ฌ๋ถ€, ์ด๋ฉ”์ผ, ๋‹‰๋„ค์ž„ ๋“ฑ ์‚ฌ์šฉ์ž ๊ธฐ๋ณธ ์„ค์ •์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ๋“ค์€ iOS ๋””๋ฐ”์ด์Šค ๊ธฐ๊ธฐ์— ์ €์žฅ๋˜๊ณ , ์•ฑ์„ ์‚ญ์ œํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๋“ค๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋ฉ๋‹ˆ๋‹ค.์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ฐ„๋‹จํ•œ ์˜ˆ์‹œ๋ฅผ ํ†ตํ•ด ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!๋จผ์ €! Storyboard์—์„œtextField, Button, L..

Swift/Xcode 2024.05.25

[Swift] for-in ๊ณผ forEach

for-in์™€ forEach์˜ ์ฐจ์ด์ For-In LoopsYou use the for-in loop to iterate over a sequence, such as items in an array, ranges of numbers, or characters in a string.-๋ฐฐ์—ด(array), ์ˆซ์ž ๋ฒ”์œ„(ranges of numbers), ๋ฌธ์ž์—ด ์† ๋ฌธ์ž(charcters in a string)์™€ ๊ฐ™์€ ์š”์†Œ๋“ค์„ for-in loop๋ฅผ ํ†ตํ•ด sequence๋ฅผ ๋ฐ˜๋ณตโ–ท array(๋ฐฐ์—ด)let names = ["Anna", "Alex", "Brian", "Jack"]for name in names { print("Hello, \(name)!")}// Hello, Anna!// Hello, Alex!/..

Swift 2024.05.21

[Swift] tag ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋“œ ๊ฐ„์†Œํ™”ํ•˜๊ธฐ

์•ฑ์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด,์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒ„ํŠผ์ด ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํ™”๋ฉด์„ ๋งŒ๋“ค์–ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.์œ„ ํ™”๋ฉด์ฒ˜๋Ÿผ ๋ง์ด์ฃ !์ฒ˜์Œ์— ์ด ์•ฑ์„ ๋งŒ๋“ค ๋•Œ, '๋…ธ๊ฐ€๋‹ค๊ฐ€ ๋”ฐ๋กœ ์—†๊ตฌ๋‚˜.' ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.9๊ฐœ์˜ ๋ฒ„ํŠผ์„ ๋ชจ๋‘ ํ•˜๋‚˜ํ•˜๋‚˜ Outlet ์—ฐ๊ฒฐ์„ ํ•˜๊ณ ,๋ฒ„ํŠผ์ด ํด๋ฆญ๋์„ ๋•Œ, ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•ด์•ผํ•˜๋Š”์ง€ 9๊ฐœ์˜ Action์„ ์—ฐ๊ฒฐํ–ˆ๊ฑฐ๋“ ์š”!์ด๋ ‡๊ฒŒ ํ•˜๋‹ค๋ณด๋‹ˆ, ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ ํ˜€์žˆ์œผ๋‹ˆ ์ฝ”๋“œ๋„ ์—„์ฒญ ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค.๐Ÿ˜… ์ด๋Ÿฐ ๋ถ€๋ถ„๋“ค์„ ๊ฐ„์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ํ•˜๋‚˜ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค!๋ฐ”๋กœ! tag๋ฅผ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.์Šคํ† ๋ฆฌ๋ณด๋“œ์—์„œ ์š”์†Œ๋“ค์„ ํด๋ฆญํ•ด์„œ ์šฐ์ธก ์ธ์ŠคํŽ™ํ„ฐ ์˜์—ญ์„ ์‚ดํŽด๋ณด๋ฉด,์ด๋ ‡๊ฒŒ Tag๊ฐ€ ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๋งŒ์•ฝ ๋ฒ„ํŠผ 3๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด,๋ฐ”๋กœ ์ด tag๋ฅผ ํ™œ์šฉํ•ด์„œ ์–ด๋–ค ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋Š”์ง€  ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์œ„์—..

Swift/Xcode 2024.05.20