Deep_Dev
article thumbnail
[iOS] AutoLayout : Graph _ Animated
๐ŸŽ iOS/UIKit 2023. 3. 31. 20:38

๐Ÿ“Œ AutoLayout : Graph_Animated ๊ทธ๋ž˜ํ”„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค‘์•™์— ๋ณด์ด๋Š” ๋ง‰๋Œ€ํ˜• Graph Layout์„ ๋งŒ๋“ค์–ด๋ณด๋Š”๊ฒƒ์ด๋‹ค. View ์•ˆ์— View๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ง‰๋Œ€๋ฅผ ๋งŒ๋“ค๊ณ  ๋ง‰๋Œ€ ํ•˜๋‚˜๋ฅผ ์šฐํด๋ฆญํ•˜์—ฌ ์ƒ์œ„View์˜ 'Equals Height' ์„ค์ •ํ•˜๊ณ  Structure์— ๋ณด์ด๋“ฏ์ด ์ƒ์œ„ View ~ ๋ง‰๋Œ€ View 6๊ฐœ๋ฅผ ๋ชจ๋‘ ์„ ํƒํ•˜์—ฌ 'Equal Height' ์„ค์ • 6๊ฐœ ๋ง‰๋Œ€View๋งŒ ์„ ํƒํ•˜์—ฌ Equal Widths๋กœ ๋„“์ด๋ฅผ ๊ฐ™๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค. ํ•˜๋‚˜ํ•˜๋‚˜์˜ ๋ง‰๋Œ€ View์˜ ๋†’์ด๋Š” Equal Height to ์˜ Multiplier๋ฅผ ์กฐ์ ˆํ•ด์ค€๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ๊นŒ์ง€๋Š” Multiplier๋ฅผ ์ด์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด์ง€๋งŒ, ์‚ฌ์šฉ์žํ•œํ…Œ ์ž…๋ ฅ์„ ๋ฐ›๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด์„œ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ์œ„ํ•ด์„  ์ด..

article thumbnail
[iOS] AutoLayout : Dynamic Text ( ๋™์  ํ…์ŠคํŠธ )
๐ŸŽ iOS/UIKit 2023. 3. 30. 20:49

๐Ÿ“Œ AutoLayout : Dynamic Text ๋™์  ํ…์ŠคํŠธ ๊ตฌํ˜„ ๋ฐฉ๋ฒ• View์˜ ์œ„์น˜๋Š” ์ˆ˜ํ‰, ์ˆ˜์ง์œผ๋กœ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ๊ณ  View๋‚ด imageView์˜ ์œ„์น˜๋ฅผ ์žก์•„์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ฝ‰์ฐจ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด, ์ƒํ•˜์ขŒ์šฐ ์—ฌ๋ฐฑ์„ 0์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ๋น„์œจ์ด ๊นจ์ ธ์„œ ์ด์ƒํ•˜๊ฒŒ ๋ณด์ผ ๊ฒƒ์ด๋‹ค. ๊ทธ ์ด์œ ๋Š” imageView์˜ ํฌ๊ธฐ์— ๋“ค์–ด๊ฐ€๋Š” image๋ฅผ ํ”ฝ์…€๊ฐ’ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ์™”๊ธฐ๋•Œ๋ฌธ์ด๋‹ค. ์ฆ‰, ์ œ์•ฝ์กฐ๊ฑด์„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„์„œ์ด๋‹ค. ๋จผ์ € imageView์˜ ContentMode๋ฅผ Asfect Fit์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. ๊ทธ๋Ÿผ์—๋„ ์•„์ง ํฌ๊ธฐ๊ฐ€ ๋งž์ง€ ์•Š๋Š”๋‹ค. image์˜ ์›๋ณธ ํฌ๊ธฐ๋Œ€๋กœ ์˜ฌ๋ฆฌ๋ ค๋ฉด -> ์‚ฌ์ง„์˜ Aspect Ratio๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์ง„์˜ ์›๋ณธ ํฌ๊ธฐ(width, height )๋ฅผ ๋น„์œจ์„ ์„ค์ •ํ•ด์ค€๋‹ค. ๊ทธ๋Ÿผ imageView์˜ ํฌ๊ธฐ๊ฐ€ ํ•ด๊ฒฐ ์™„๋ฃŒ ..

article thumbnail
[iOS] Modal dismiss ์ดํ›„ reloadData() ํ•˜๊ธฐ
๐ŸŽ iOS/UIKit 2023. 3. 21. 14:24

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰๋„์ค‘ NavigationController๋กœ ์—ฐ๊ฒฐ๋œ View์—์„œ dismiss์ดํ›„ ์ž๋™์œผ๋กœ reloadData()๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. dismiss ์ดํ›„ ๋ณด์ด๋Š” ํ™”๋ฉด์—์„œ viewWillAppear()๋ฅผ ํ•ด์คฌ์Œ์—๋„ ๋ง์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋งํ•œ ๊ฒฐ๊ณผ ์›์ธ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. Navigation Controller๋ฅผ dismiss ํ•œ ์ดํ›„์—๋Š” viewWillAppear๋‚˜ viewDidAppear๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. CollectionView๋‚˜ TableView๋ฅผ reload ํ•˜๋ ค๋ฉด NotificationCenter๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค. ์•„๋ž˜์ฝ”๋“œ์—์„œ TableViewController์™€ DetailViewController๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, DetailViewController๊ฐ€ ๋ชจ๋‹ฌ๋กœ ๋„์šธ..

article thumbnail
[Swift ๊ธฐ์ดˆ] ๋ชจ๋‚˜๋“œ

๋ชจ๋‚˜๋“œ ๋ชจ๋‚˜๋“œ๋Š” ํŠน์ • ๊ธฐ๋Šฅ์ด ์•„๋‹Œ ๋””์ž์ธ ํŒจํ„ด ํ˜น์€ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํƒ€์ž…์„ ์ธ์ž๋กœ ๋ฐ›๋Š” ํƒ€์ž… ( ํŠน์ • ํƒ€์ž…์˜ ๊ฐ’์„ ํฌ์žฅ ) ํŠน์ • ํƒ€์ž…์˜ ๊ฐ’์„ ํฌ์žฅํ•œ ๊ฒƒ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)๊ฐ€ ์กด์žฌ ํฌ์žฅ๋œ ๊ฐ’์„ ๋ณ€ํ™˜ํ•˜์—ฌ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํฌ์žฅํ•˜๋Š” ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)๊ฐ€ ์กด์žฌ ์ปจํ…์ŠคํŠธ ์ปจํ…์ŠคํŠธcontext๋Š” ์ปจํ…์ธ ๋ฅผ ๋‹ด์€ ์ƒ์ž ๊ฐ™์€ ๊ฒƒ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. func addThree(_ num: Int) -> Int { return num + 3 } //๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ผ๋ฐ˜ Int ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ addThree(2) //์ „๋‹ฌ์ธ์ž๊ฐ€ ์ˆœ์ˆ˜ํ•œ ๊ฐ’์ด ์•„๋‹Œ ์˜ต์…”๋„์ด๋ผ๋Š” ์ปจํ…์ŠคํŠธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์ „๋‹ฌ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ addThree(..

article thumbnail
[Swift ๊ธฐ์ดˆ] ๋งต, ํ•„ํ„ฐ, ๋ฆฌ๋“€์Šค

๋งต, ํ•„ํ„ฐ, ๋ฆฌ๋“€์Šค ์Šค์œ„ํ”„ํŠธ๋Š” ํ•จ์ˆ˜๋ฅผ ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ „๋‹ฌ์ธ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ–๋Š” ํ•จ์ˆ˜๋ฅผ ๊ณ ์ฐจํ•จ์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ๋Œ€ํ‘œ์ ์ธ ๊ณ ์ฐจํ•จ์ˆ˜๋กœ ๋งต, ํ•„ํ„ฐ, ๋ฆฌ๋“€์Šค๊ฐ€ ์žˆ๋‹ค. ๋งต ์ž์‹ ์„ ํ˜ธ์ถœํ•  ๋•Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ ์Šค์œ„ํ”„ํŠธ์—์„œ ๋งต์€ ๋ฐฐ์—ด, ๋”•์…”๋„ˆ๋ฆฌ, ์„ธํŠธ, ์˜ต์…”๋„ ๋“ฑ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ˜•ํ•˜๋Š”๋ฐ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. for-in ๊ตฌ๋ฌธ๊ณผ ๋งต ๋ฉ”์„œ๋“œ์˜ ์‚ฌ์šฉ ๋น„๊ต let numbers: [Int] = [0,1,2,3,4] var doubledNumbers: [Int] = [Int]() var strings: [String] = [String]() // for ๊ตฌ๋ฌธ ์‚ฌ์šฉ for number in numbers..

article thumbnail
[Swift] Dispatch Queue
๐ŸŽ iOS/Swift 2023. 1. 27. 01:08

๐Ÿ“– Dispatch Queue Queue : FIFO ๊ตฌ์กฐ Serial Queue ์ด์ „ ์ž‘์—…์ด ๋๋‚˜๋ฉด ๋‹ค์Œ ์ž‘์—…์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ์ง๋ ฌ ํ˜•ํƒœ Concurrent Queue ์ด์ „ ์ž‘์—…์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๋ณ‘๋ ฌ ํ˜•ํƒœ ๐Ÿ“– GCD GCD : Multi Process๋ฅผ ์œ„ํ•œ Thread Programming์˜ ๋ฐฉ๋ฒ• ๊ธฐ์กด์— Thread Programming์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋™๊ธฐํ™”๋„ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผํ•˜๊ณ , deadlock๋„ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋“ฑ ์Šค๋ ˆ๋“œํ’€์„ ์ง์ ‘ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์ง€๋งŒ, ์• ํ”Œ์—์„œ ๋”ฐ๋กœ GCD๋ฅผ ํ†ตํ•ด์„œ ์“ฐ๋ ˆ๋“œ๋ฅผ OS์—์„œ ๊ด€๋ฆฌํ•˜๊ณ  ๋ถ„๋ฐฐํ•˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ Swift์—์„œ๋Š” Thread ๊ด€๋ จ ์ž‘์—…์€ Grand Central Dispatch API ( GCD )๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•œ๋‹ค...

article thumbnail
[Swift ๊ธฐ์ดˆ] ์˜ต์…”๋„ ์ฒด์ด๋‹๊ณผ ๋น ๋ฅธ ์ข…๋ฃŒ

์˜ต์…”๋„ ์ฒด์ด๋‹ ์˜ต์…”๋„์— ์†ํ•ด ์žˆ๋Š” nil ์ผ์ง€๋„ ๋ชจ๋ฅด๋Š” ํ”„๋กœํผํ‹ฐ, ๋ฉ”์„œ๋“œ, ์„œ๋ธŒ์Šคํฌ๋ฆฝ์…˜ ๋“ฑ์„ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜ ํ˜ธ์ถœํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ผ๋ จ์˜ ๊ณผ์ •. ์ฆ‰, ์˜ต์…”๋„์„ ๋ฐ˜๋ณต์‚ฌ์šฉํ•˜์—ฌ ์˜ต์…”๋„์ด ์ž์ „๊ฑฐ ์ฒด์ธ์ฒ˜๋Ÿผ ์„œ๋กœ ๊ผฌ๋ฆฌ๋ฅผ ๋ฌผ๊ณ  ์žˆ๋Š” ๋ชจ์–‘์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ต์…”๋„ ์ฒด์ด๋‹์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ž์ „๊ฑฐ ์ฒด์ธ์—์„œ ํ•œ ์นธ์ด๋ผ๋„ ์—†๊ฑฐ๋‚˜ ๊ณ ์žฅ ๋‚˜๋ฉด ์ฒด์ธ ์ „์ฒด๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋“ฏ์ด ์ค‘์ฒฉ๋œ ์˜ต์…”๋„ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฒฐ๊ณผ์ ์œผ๋กœ nil ๋ฐ˜ํ™˜ ์˜ต์…”๋„ ์ฒด์ด๋‹์€ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ ๋˜๋Š” ์„œ๋ธŒ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ์€ ์˜ต์…”๋„ ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜ ๋’ค์— ๋ฌผ์Œํ‘œ(?)๋ฅผ ๋ถ™์—ฌ ํ‘œํ˜„ํ•œ๋‹ค. ์˜ต์…”๋„์ด nil์ด ์•„๋‹ˆ๋ผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ˜ธ์ถœ๋  ๊ฒƒ์ด๊ณ , nil์ด๋ผ๋ฉด ๊ฒฐ๊ด๊ฐ’์œผ๋กœ nil์„ ๋ฐ˜ํ™˜ํ•  ๊ฒƒ์ด๋‹ค. ! ( ๋Š๋‚Œํ‘œ ) ๋ฌผ์Œํ‘œ ๋Œ€์‹ ์— ๋Š๋‚Œํ‘œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„์žˆ๋Š”๋ฐ, ์ด๋Š” ์˜ต์…”๋„์—..

article thumbnail
[Swift ๊ธฐ์ดˆ] ํด๋กœ์ €

ํด๋กœ์ € ํด๋กœ์ €๋Š” ์‚ฌ์šฉ์ž์˜ ์ฝ”๋“œ ์•ˆ์—์„œ ์ „๋‹ฌ๋˜์–ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋กœ์ง์„ ๊ฐ€์ง• ์ค‘๊ด„ํ˜ธ{} ๊ตฌ๋ถ„๋œ ์ฝ”๋“œ์˜ ๋ธ”๋Ÿญ์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด '์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜'์ด๋‹ค. ๋”ฐ๋ผ์„œ ํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด ์žˆ๋Š” ํด๋กœ์ €๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋กœ์ €๋Š” ๋ณ€์ˆ˜๋‚˜ ์ƒ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์œ„์น˜์—์„œ ์ฐธ์กฐ๋ฅผ ํš๋“ํ•˜๊ณ  ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ’ก ํด๋กœ์ €์˜ 3๊ฐ€์ง€ ํ˜•ํƒœ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด์„œ ์–ด๋–ค ๊ฐ’๋„ ํš๋“ํ•˜์ง€ ์•Š์€ ์ „์—ญํ•จ์ˆ˜์˜ ํ˜•ํƒœ ์ด๋ฆ„์ด ์žˆ์œผ๋ฉด์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๊ฐ’์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜์˜ ํ˜•ํƒœ ์ด๋ฆ„์ด ์—†๊ณ  ์ฃผ๋ณ€ ๋ฌธ๋งฅ์— ๋”ฐ๋ผ ๊ฐ’์„ ํš๋“ํ•  ์ˆ˜ ์žˆ๋Š” ์ถ•์•ฝ ๋ฌธ๋ฒ•์œผ๋กœ ์ž‘์„ฑํ•œ ํ˜•ํƒœ ๐Ÿ’ก ํด๋กœ์ €์˜ ๋‹ค์–‘ํ•œ ํ‘œํ˜„ ํด๋กœ์ €๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ๊ฐ’์˜ ํƒ€์ž…์„ ๋ฌธ๋งฅ์„ ํ†ตํ•ด ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ๋ฐ˜ํ™˜ ๊ฐ’์˜ ํƒ€์ž…์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋กœ์ €์— ๋‹จ ํ•œ์ค„์˜ ํ‘œํ˜„๋งŒ ๋“ค์–ด์žˆ๋‹ค๋ฉด ์•”์‹œ์ ์œผ๋กœ ์ด๋ฅผ ๋ฐ˜..