๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/iOS 8

Core Animations ํ•™์Šตํ•˜๊ธฐ - PieGraph

ํ”„๋กœ์ ํŠธ ์ค‘ ํฅ๋ฏธ๋กญ๊ฒŒ ํ•™์Šตํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด ๊ธฐ๋กํ•ด๋ณด์•˜๋‹ค. ์ฐธ๊ณ : https://www.tnoda.com/blog/2019-06-18/ ๋ฒ ์ง€์–ด ๊ณก์„ ์ด๋ž€? - n๊ฐœ์˜ ์ ์œผ๋กœ๋ถ€ํ„ฐ ์–ป์–ด์ง€๋Š” n-1์ฐจ ๊ณก์„  ์• ํ”Œ์—์„œ ์ œ๊ณตํ•˜๋Š” UIBezierPath๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ง€์ถœ์— ๋Œ€ํ•œ ํŒŒ์ด์ฐจํŠธ๋ฅผ ๊ทธ๋ ค๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค. ์žํŒ๊ธฐ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ ๋•Œ ํ™œ์šฉํ–ˆ๋˜ ๋ฐฉ๋ฒ•๋ณด๋‹ค๋Š”, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜์—ฌ activeํ•œ UI๋ฅผ ๋‚˜ํƒ€๋‚ด๋ณด๊ณ ์ž ํ•œ๋‹ค. VC์—์„œ animate ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) reportPieChartView.slices = setupSlices() reportPieChartView.animateChart() }..

Swift Card Flip ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ

iOS ์•ฑ์„ ๋งŒ๋“ค๋•Œ, ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ์ด ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์ด๊ธธ๋ž˜ ์†Œ๊ฐœํ•ด๋ณธ๋‹ค. 1. Xcode - Single View App ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 2. Asset ์— ์ „ํ™˜์‹œํ‚ฌ ์‚ฌ์ง„์„ ์—…๋กœ๋“œํ•œ๋‹ค. 3. Storyboard๋กœ ๊ฐ€์„œ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์งˆ ImageView์™€ Button์„ ์ƒ์„ฑํ•œ๋‹ค. 4. Contraints๋ฅผ ๊ฑธ์–ด์ค€๋‹ค. (์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ View๋“ค์„ ๊ณ ์ •์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.) 5. command+option+control+enter ํ‚ค๋กœ Assistant Editor๋ฅผ ์ผœ๊ณ  control ์„ ๋ˆ„๋ฅธ ์ƒํƒœ๋กœ ImageView๋ฅผ ๋ณด์กฐํŽธ์ง‘๊ธฐ๋กœ ๋Œ์–ด์˜จ๋‹ค. 6. Button์€ ๋งˆ์šฐ์Šค ์šฐํด๋ฆญ์„ ํ•œ ํ›„ Touch Up Inside ๋ฅผ ๋Œ์–ด์„œ ๋ณด์กฐ ํŽธ์ง‘๊ธฐ์— ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ถ”๊ฐ€ํ•œ๋‹ค. 7. ViewControl..

UIKit๋ž€?

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ edwith ๋ถ€์ŠคํŠธ์ฝ”์Šค iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค. UIKit๋ž€? UIKit์€ iOS ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์ด๋ฒคํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. UIKit ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ์ œ์Šค์ฒ˜ ์ฒ˜๋ฆฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜, ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ, ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ ์‚ฌ์šฉ์ž ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•œ๋‹ค. ๋˜ํ•œ ํ…Œ์ด๋ธ”๋ทฐ, ์Šฌ๋ผ์ด๋”, ๋ฒ„ํŠผ, ํ…์ŠคํŠธ ํ•„๋“œ, ์–ผ๋Ÿฟ ์ฐฝ ๋“ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋ฅผ ํฌํ•จํ•œ๋‹ค. UIKit ํด๋ž˜์Šค ์ค‘ UIResponder์—์„œ ํŒŒ์ƒ๋œ ํด๋ž˜์Šค๋‚˜ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ(ํ˜น์€ ๋ฉ”์ธ ๋””์ŠคํŒจ์น˜ ํ)์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. UIKit์€ iOS์™€ tvOS ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉํ•œ๋‹ค. UIKit ๊ธฐ๋Šฅ๋ณ„ ์š”์†Œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด..

Cocoa Touch ํ”„๋ ˆ์ž„์›Œํฌ๋ž€?

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ edwith ๋ถ€์ŠคํŠธ์ฝ”์Šค iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค. ์ฝ”์ฝ”์•„ (API) ์ฝ”์ฝ”์•„๋Š” ์• ํ”Œ ๊ณ ์œ ์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ™˜๊ฒฝ์œผ๋กœ ๋งฅ OS X์˜ ์šด์˜ ์ฒด์ œ๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ๋งฅ OS X์—๋Š” ํฌ๊ฒŒ ์นด๋ณธ, ์ด์‹ ๊ฐ€๋Šฅ ์šด์˜ ์ฒด์ œ ์ธํ„ฐํŽ˜์ด์Šค (BSD ํ™˜๊ฒฝ์„ ์œ„ํ•จ), X11, ์ž๋ฐ”์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ API๊ฐ€ ์žˆ๋‹ค. ์ฝ”์ฝ”์•„ ํ„ฐ์น˜ ์•„์ดํฐ, ์•„์ดํŒจ๋“œ ๋ฐ ์•„์ดํŒŸ ํ„ฐ์น˜์šฉ API์ด๋‹ค. ์• ํ”Œ์ด ๊ฐœ๋ฐœํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ, ์ฝ”์ฝ”์•„ ํ„ฐ์น˜ ๊ณ„์ธต(Cocoa Touch Layer)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. ๊ทธ๋ž˜ํ”ฝ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”, ์ด๋ฒคํŠธ-๊ตฌ๋™(event-driven) ๊ธฐ๋ฒ•์„ ์“ฐ๋Š” ์•„์ดํฐ ๋ฐ ์•„์ดํŒŸ ํ„ฐ์น˜์šฉ ์‘์šฉ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋ณดํ†ต ์ฝ”์ฝ”์•„ ํ„ฐ์น˜ ๊ณ„์ธต์— ๊ธฐ๋ฐ˜ํ•˜์—ฌ ์ž‘์„ฑ๋œ๋‹ค. ๋˜ํ•œ, ์‚ฌ์šฉ์ž ์ „ํ™”๋ฒˆ..

AVFoundation, Timer๋ž€?

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ edwith ๋ถ€์ŠคํŠธ์ฝ”์Šค iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค. AVFoundation Objective-C ๋ฐ Swift์˜ API๊ฐ€ ํฌํ•จ ๋œ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ํ”„๋ ˆ์ž„ ์›Œํฌ๋กœ, Apple Darwin ๊ธฐ๋ฐ˜ ์šด์˜ ์ฒด์ œ (iOS, macOS, tvOS ๋ฐ watchOS)์—์„œ ์‹œ๊ฐ„ ๊ธฐ๋ฐ˜ ์‹œ์ฒญ๊ฐ ๋ฏธ๋””์–ด ์ž‘์—…์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฏธ๋””์–ด ์žฌ์ƒ ๋ฐ ํŽธ์ง‘(QuickTime ๋™์˜์ƒ ๋ฐ MPEG-4 ํŒŒ์ผ ์žฌ์ƒ/์ƒ์„ฑ/ํŽธ์ง‘, HLS ์ŠคํŠธ๋ฆผ ์žฌ์ƒ: ์žฌ์ƒ๊ฐ€๋Šฅ ํŒŒ์ผ ๋ชฉ๋ก ๋งํฌ) ๋””๋ฐ”์ด์Šค ์นด๋ฉ”๋ผ์™€ ๋งˆ์ดํฌ๋ฅผ ์ด์šฉํ•œ ์˜์ƒ ๋…นํ™” ๋ฐ ์‚ฌ์šด๋“œ ๋…น์Œ ์‹œ์Šคํ…œ ์‚ฌ์šด๋“œ ์ œ์–ด ๋ฌธ์ž์˜ ์Œ์„ฑํ™” AVAudioPlayer Class ํŒŒ์ผ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ์‚ฌ์šด๋“œ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ์ƒํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต ํŒŒ์ผ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ..

UIButton, UISlider, UILabel์ด๋ž€?

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ edwith ๋ถ€์ŠคํŠธ์ฝ”์Šค iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค. UIButton, UISlider, UILabel ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™”๋ฉด์„ ๊ตฌํ˜„ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” UI์š”์†Œ๋“ค์ด๋‹ค. 1. UIButton ์‚ฌ์šฉ์ž์˜ ์ƒํ˜ธ์ž‘์šฉ(ํ„ฐ์น˜/ํƒญ ๋“ฑ์˜ ์ด๋ฒคํŠธ)์— ๋ฐ˜์‘ํ•ด ๋ฏธ๋ฆฌ ์ง€์ •๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ปจํŠธ๋กค ์š”์†Œ ๋ฒ„ํŠผ ์ƒ์„ฑ์˜ 3๋‹จ๊ณ„ ๋ฒ„ํŠผ์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฒ„ํŠผ์˜ ์œ ํ˜•์„ ์„ ํƒ ๋ฒ„ํŠผ์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•œ ๋ฌธ์ž(ํƒ€์ดํ‹€)์„ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜, ์ด๋ฏธ์ง€๋ฅผ ์„ค์ •ํ•œ ๋’ค ํฌ๊ธฐ๋ฅผ ์กฐ์ • ๋ฒ„ํŠผ์— ํŠน์ • ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ž‘๋™ํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฐ๊ฒฐ ๋ฒ„ํŠผ๊ณผ ๋ฉ”์„œ๋“œ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ• addTarget(_:action:for:) ๋ฉ”์„œ๋“œ ์‚ฌ์šฉ ์ธํ„ฐํŽ˜์ด์Šค ๋นŒ๋”์—์„œ ์—ฐ๊ฒฐ (@IBAction) ์ด๋•Œ ๋ฒ„ํŠผ๊ณผ ์—ฐ๊ฒฐ๋˜๋Š” ๋ฉ”์„œ๋“œ ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. func do..

IBOutlet, IBAction์ด๋ž€?

์‰ฝ๊ฒŒ ๋งํ•ด, IBOutlet์€ ์ฝ”๋“œ์— ์ •์˜๋œ ๋ณ€์ˆ˜์™€ ํ™”๋ฉด์˜ ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด๊ณ  IBAction์€ Event๊ฐ€ ์ผ์–ด๋‚œ ๊ฒฝ์šฐ ํ˜ธ์ถœ๋˜๋Š” Action์„ ์ •์˜ํ•ด๋‘” ๊ฒƒ์ด๋‹ค. IBOutlet์ด๋‚˜ IBAction ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด StoryBoard์™€์˜ ์—ฐ๊ฒฐ๊ณ ๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•œ๋‹ค. ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์•ž์— @IBOutlet ๋˜๋Š” @IBAction ํ‚ค์›Œ๋“œ๋ฅผ ์ž‘์„ฑํ•ด StoryBoard์—์„œ ๋ฒ„ํŠผ์ด๋‚˜ ๋ ˆ์ด๋ธ”๊ฐ™์€ ์ปดํฌ๋„ŒํŠธ์™€ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์—์…‹ ์นดํƒˆ๋กœ๊ทธ๋ž€?

๋ณธ ๊ฒŒ์‹œ๊ธ€์€ edwith ๋ถ€์ŠคํŠธ์ฝ”์Šค iOS ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ์ž…๋‹ˆ๋‹ค. ์—์…‹ ์นดํƒˆ๋กœ๊ทธ๋ž€? Xcode์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•˜๋ฉด Asstes.xcassets ์ด๋ผ๋Š” ํด๋”๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜๋Š”๋ฐ, ์ด ํด๋”์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์‚ฌ์šฉ๋  ๋‹ค์–‘ํ•œ ์—์…‹์„ ๊ด€๋ฆฌํ•˜๋ฉฐ, ์ด๋ฅผ ์—์…‹ ์นดํƒˆ๋กœ๊ทธ๋ผ๊ณ  ํ•œ๋‹ค. ์—์…‹ ์นดํƒˆ๋กœ๊ทธ๋Š” ์—์…‹๊ณผ ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค์˜ ์†์„ฑ์— ๋Œ€ํ•œ ํŒŒ์ผ์˜ ์—ฐ๊ฒฐ์„(mapping) ํ†ตํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฆฌ์†Œ์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค. (๋ฆฌ์†Œ์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‹คํ–‰ ์ค‘์ผ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฏธ์ง€์™€ ์Œ์•… ํŒŒ์ผ ๋“ฑ์ด๋‹ค.) ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์†์„ฑ์€ ๋””๋ฐ”์ด์Šค์˜ ํŠน์ง•, ์‚ฌ์ด์ฆˆ ํด๋ž˜์Šค, ์ฃผ๋ฌธํ˜• ๋ฆฌ์†Œ์Šค, ํŠน์ • ํƒ€์ž…์˜ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค. Asset: ์—์…‹์€ ํ•œ ๊ฐ€์ง€ ํƒ€์ž…์˜ ๊ด€๋ จ๋œ ์†์„ฑ๊ณผ ํŒŒ์ผ๋“ค์˜ ์ง‘ํ•ฉ ์—์…‹ ์ด๋ฆ„: ์—..