UMC iOS ์„ธ๋ฏธ๋‚˜ 8์ฃผ์ฐจ

2022. 11. 14. 21:55ใ†UniversityMakeUsChallenge/UMCiOS

 

 

 

 

9:20 ~

 

 

 

 

 

 

์• ๋‹ˆ๋ฉ”์ด์…˜ + ์ œ์Šค์ฒ˜
UI View + Button

 

 

 

๋ ˆ์ด์•„์›ƒ์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์„ ๋•Œ

์Šคํ† ๋ฆฌ๋ณด๋“œ์— ์žกํ˜€์žˆ๋Š” ์˜คํ†  ๋ ˆ์ด์•„์›ƒ์„ ๋Œ์–ด์˜ฌ ์ˆ˜ ์žˆ๋‹ค

ํŒŒ๋ž€ ์‹ค์„ ์„ ๋Œ๊ณ  ์˜จ๋‹ค. (IBOutlet์œผ๋กœ ์‚ฌ์šฉ)

 

 

์˜ค๋ Œ์ง€ ๋ทฐ ํƒ‘

 

 

์ด๋ ‡๊ฒŒ ๋Œ์–ด์˜จ๋‹ค!

 

 

์ด๋ ‡๊ฒŒ ์„ธํŒ…! :)

 

 

UIView ์—๋‹ˆ๋ฉ”์ด์…˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๋งค์šฐ ๋งŽ๋‹ค

 

 

 

์—ฌ๊ธฐ์„œ ์“ธ ๊ฒƒ๋งŒ ๋‚จ๊น€

 

 

์šฐ๋ฆฌ์˜ ๋ชฉํ‘œ: ์˜ค๋ Œ์ง€ ๋ทฐ์˜ ํƒ‘๊ณผ ํ—ค์ดํŠธ ์ƒ์ˆ˜๊ฐ’์„ ๋ณ€ํ™”์‹œํ‚จ๋‹ค

 

 

 

 

 

 

 

 

 

 

์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ ์šฉ์ด ์•ˆ๋˜๊ณ  (3์ดˆ๊ฐ„)

๋ฐ”๋กœ ์ซ™ ํŽด์ง

-> ๋ณ€๊ฒฝ๋œ UI ๋‚ด์šฉ์ด ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

-> ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒƒ 

: ๋” ์ž์„ธํ•˜๊ฒŒ ์•Œ์•„๋ณด์ž

 

 

UI ๊ด€๋ จ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜์–ด์•ผ๋œ๋‹ค๊ณ  View์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ

 

 

layout์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๋ช…๋ นํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๊ผญ ํ•„์š”ํ•˜๋‹ค

์™œ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ ์šฉ์ด ์•ˆ๋˜์ง€? ํ•ด๋ฉ”๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. 

layoutIfNeeded() ๊ผญ ํ™œ์šฉ!

๋ฐ”๋กœ๋ฐ”๋กœ UI ์—…๋ฐ์ดํŠธ๋“ค์ด ์ ์šฉ์ด ๋œ๋‹ค. 

 

 

์• ๋‹ˆ๋ฉ”์ด์…˜ ์ ์šฉํ•  ๋•Œ๋Š”,

UIView์˜ animate ๋ฉ”์†Œ๋“œ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

animate ๋ฉ”์†Œ๋“œ์—๋Š” ๋‹ค์–‘ํ•œ parameter์ด ์žˆ๋Š”๋ฐ,

๊ทธ๊ฒƒ ์ค‘์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ œ์Šค์ณ๊ฐ€ ์กด์žฌ -> ํ•„์š”ํ•œ ๊ฒƒ ์“ฐ๋ฉด ๋จ

 

 

 

๋ฒ„ํŠผ ์ง€์šฐ๊ณ , ๋ทฐ ์ž์ฒด๊ฐ€ ๋ˆŒ๋ ธ์„ ๋•Œ ์ ์šฉํ•ด๋ณด์ž

 

 

ํƒญ ์ œ์Šค์ณ๋ฅผ ๋Œ์–ด์„œ UI View ๋‚ด๋ถ€์— ๋„ฃ๋Š”๋‹ค!

 

 

 

๊ณ„์ธต์—์„œ ํƒญ ์ œ์Šค์ณ๋ฅผ ๋Œ์–ด์„œ ๊ฐ€์ ธ์˜จ๋‹ค

 

 

 

 

 

 

addTarget ํ™œ์šฉ

 

 

ํƒ€๊ฒŸ: ํ•ด๋‹น ๋ทฐ์ปจ

์•ก์…˜: Selector -> #selector๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ

-> object-C ๋Ÿฐํƒ€์ž„์— ์˜์กดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋‹ฌ์•„์ค„ ๋•Œ #

 

 

 

 

ํ‰์†Œ์— ํ•จ์ˆ˜ ์ž‘์„ฑํ•˜๋“ฏ์ด ์“ด๋‹ค

์•ž์— @objc ์ถ”๊ฐ€ํ•˜๋ฉด ๋จ 

์ด ํ•จ์ˆ˜๋Š” ์˜ค๋ธŒ์ ํŠธ ์”จ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค ์„ ์–ธ๋œ ๊ฒƒ

 

 

 

 

์•„๊นŒ์™€ ๋™์ผ

 

 

์˜ค์˜ค

 

 

Tap ์ œ์Šค์ฒ˜ : ์Šคํฌ๋ฆฐ์ด ๋ˆŒ๋ ธ์„ ๋•Œ

 

 

 

ํƒญํ•˜๋ฉด ์Š‰์Š‰ ๋Š˜๋ฆผ

 

 

 

completion ํ™œ์šฉ : ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰์‹œํ‚ฌ ๊ฒƒ์ด ์žˆ์„ ๋•Œ ํ™œ์šฉ

 

๋‹ค์‹œ ํƒญํ•˜๋ฉด ๋‹ค์‹œ ์ž‘์•„์ง€๋Š” ๋™์ž‘์„ ๊ตฌํ˜„ํ•ด๋ณด์ž

 

 

๊ฐ„๋‹จํ•˜๊ฒŒ flag ์„ ์–ธ

 

 

 

 

_ in 

์ปดํ”Œ๋ฆฌ์…˜๋„ ํด๋กœ์ €

๋ฐ˜ํ™˜๊ฐ’์„ ๋ฐ›์•„์ค„ ํŒŒ๋ผ๋ฏธํ„ฐ -> ์—†์œผ๋‹ˆ๊น ์–ธ๋”๋ฐ”

ํด๋กœ์ €๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด๋ฉด ์ดํ•ดํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

ํด๋กœ์ € ๊ณต๋ถ€!

 

 

์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋‹ค ์ข…๋ฃŒ๋œ ์ดํ›„, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์‹ถ์€ ๊ฑธ ๋„ฃ์œผ๋ฉด ๋จ

 

 

 

๊ตณ์ด ๋ฒ„ํŠผ์ด ์•„๋‹ˆ๋”๋ผ๋„,

์œ ์ €์˜ ์ž…๋ ฅ์„(์•ก์…˜์„) ๋ฐ›๋Š” ๊ฒฝ์šฐ

UI Gesture Recognizer ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

8๊ฐœ ์ค‘ Tap ์ œ์Šค์ณ๋ฅผ ํ™œ์šฉํ•ด๋ณธ ๊ฒƒ

๋‹ค์–‘ํ•œ ์ œ์Šค์ณ, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ํ™œ์šฉํ•ด๋ณด์ž! :)

 

 

 

 

 

 

 

 

 

- ์• ๋‹ˆ๋ฉ”์ด์…˜ parameter ์ค‘ ์˜ต์…˜: ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์‹คํ–‰์‹œํ‚ฌ ๋•Œ, ์ถ”๊ฐ€์ ์œผ๋กœ ์ค„ ๊ธฐ๋Šฅ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ Swift๊ฐ€ ์ œ๊ณตํ•จ

: ํŒ์—… ์ฐฝ์„ ๋„์šธ ๋•Œ, (์˜ค๋žœ์ง€ ๋ทฐ๋ฅผ ์„ ํƒํ–ˆ์„ ๋•Œ, ํŒ์—… ์ฐฝ์ด ํšŒ์ „ํ•˜๋ฉด์„œ ์˜ฌ๋ผ์˜ค๊ฑฐ๋‚˜ ๋“ฑ๋“ฑ ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ)

 

 

 

 

CoreAnimation

: ์ƒ์„ธํ•œ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ๊ณต๋ถ€ํ•ด๋ณด๋ฉด ์ข‹๋‹ค 

: ์กฐ๊ธˆ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊น ํ•„์š” ์‹œ ๊ณต๋ถ€

 

 

 

์ œ์Šค์ฒ˜ ๊ฒน์นจ

: ์ƒ๋Œ€๋ฐฉ๊ณผ ๋‚˜๋ˆ„์—ˆ๋˜ ์ฑ„ํŒ… ๋‚ด์—ญ์ด ์Œ“์ž„

์Šคํฌ๋กค์„ ํ†ตํ•ด ์ €๋ฒˆ์ฃผ์— ๋‚˜๋ˆด๋˜ ๋Œ€ํ™” ๋ณผ ์ˆ˜ ์žˆ์Œ 

๋งŒ์•ฝ์— ์ฑ„ํŒ…๋‚ด์—ญ์ด ๋‚˜์™€์žˆ๋Š” ์ฐฝ์—, ๋‹ค๋ฅธ ์ œ์Šค์ฒ˜ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋ฉด?

ex) ์Šค์™€์ดํ”„ ์ œ์Šค์ฒ˜ ์ถ”๊ฐ€

์Šคํฌ๋กค ์ œ์Šค์ฒ˜ + ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ์ œ์Šค์ฒ˜ ๊ฒน์นจ

์ œ์Šค์ฒ˜๋ผ๋ฆฌ ์ถฉ๋Œ -> ๋Œ€ํ™” ๋‚ด์šฉ ์Šคํฌ๋กค ํ–ˆ์„ ๋•Œ ์–ด๋–ค ์ œ์Šค์ฒ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š”์ง€ ์•ฑ ๋‚ด์—์„œ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋‹ค

๋‘˜ ์ค‘ ํ•˜๋‚˜ ๋ฌด์‹œ๋˜๊ฑฐ๋‚˜, ๋‘˜ ๋‹ค ์ž‘๋™ ์•ˆํ•˜๊ฑฐ๋‚˜ ๋“ฑ๋“ฑ ๋ฌธ์ œ์ƒํ™ฉ ๋ฐœ์ƒํ•จ

์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋ฉด ์ข‹์„๊นŒ? 

๊ธฐ์กด vs ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•œ ๊ฒƒ -> ์–ด๋–ค๊ฒŒ ์‹คํ–‰๋  ์ง€ ์•ฑ์—๊ฒŒ ์•Œ๋ ค์ค˜์•ผ ํ•œ๋‹ค

 

 

 

 

 

 

escaping Closure

- completion

- ํด๋กœ์ €์— ๋Œ€ํ•œ ๊ฐœ๋…์ด ์žˆ๋‹ค๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ณต๋ถ€ํ•˜๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ

- ์Šค์œ„ํ”„ํŠธ์—์„œ๋Š” ํด๋กœ์ €๊ฐ€ ์ •๋ง ๋งŽ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

- iOS ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ๊ณต๋ถ€ํ•˜๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•˜๋Š” ๋ถ€๋ถ„

- ์ •๋ง ์ค‘์š”ํ•œ ๊ฐœ๋… 

- animate ์ฝ”๋“œ๋ฅผ ๋œฏ์–ด์„œ ๋“ค์–ด๊ฐ€๋ฉด, animations์ด escaping closure๋กœ ๋˜์–ด์žˆ๋‹ค.

: ๋„คํŠธ์›Œํ‚น์—์„œ๋„ ๋ฐ˜๋“œ์‹œ ํ™œ์šฉ๋จ (์„œ๋ฒ„ ์—ฐ๊ฒฐ ๋‚ด์šฉ์—์„œ) -> ๋ฏธ๋ฆฌ ์˜ˆ์Šตํ•˜๋ฉด ์ˆ˜์›”ํ•˜๊ฒŒ ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

 

 

 

 

์Šคํƒ ๋‹ค๋“œ ๋ฏธ์…˜

- ๊ธฐ์กด ํ”„๋กœ์ ํŠธ์— ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ถ”๊ฐ€

- ์ตœ์†Œ 2~3๊ฐœ๋ฅผ ๋ถ™์—ฌ๋ณด์ž

 

 

 

์ฒผ๋ฆฐ์ง€ ๋ฏธ์…˜

- ์—†๋‹ค

- ๊ฐœ์ธ๊ณต๋ถ€ Or

- ๋ถ€์กฑํ–ˆ๋˜ ๋ฏธ์…˜ ๋ณด์ถฉํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณด์ž

- escaping closure ๊ผญ ๊ณต๋ถ€ํ•ด๋ณด์ž!