๐ ์์ด-์ค-์์ค
[iOS] Scene Life Cycle: iOS 13 ๋ถํฐ ์์๋ Scene-Based Event
[iOS] Scene Life Cycle: iOS 13 ๋ถํฐ ์์๋ Scene-Based Event
2021.09.19Scene ์ด ๋ญ๊ฐ์ฌ.. iOS 13 ๋ถํฐ๋ ํ๋์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ฌ๋ฌ๊ฐ์ ์ฐฝ์ ๊ฐ์ง ์ ์๊ฒ ๋์์ต๋๋ค. ์์ดํจ๋๋ฅผ ์๊ฐํ์๋ฉด ํธํ์คํ
๋ฐ์, ํ๋์ ์ฑ์ ๋์์ ์ฌ๋ฌ๊ฐ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฑ์ด ๊ฐ์ง๋ ์ฌ๋ฌ ์ฐฝ๋ค์ ์ง์นญํ๋ ์ฉ์ด๋ก Scene์ ์ฌ์ฉํฉ๋๋ค. ๊ฐ Scene ๋ค์ ๊ฐ์์ ViewController ์ UI ์ธ์คํด์ค๋ฅผ ๊ฐ์ง๋๋ค. ์ฑ์ด ์คํ๋ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ๋์ Scene์ด ์คํ๋๊ณ ๋ค์ค Scene์ iPad์์๋ง ์ง์๋ฉ๋๋ค! Scene Life Cycle Scene ๋ค์ ์ฌ์ฉ์์ ์ฌ์ฉ์ ๋ฐ๋ผ ์ํ๊ฐ ๋ณํํฉ๋๋ค. ์ ํ ๊ณต์๋ฌธ์์์ ์๊ฐํ๋ ๊ทธ๋ฆผ์ ๋ฐ๋ผ๊ฐ๋ณด๋ฉด ์ข ๋ ์ดํด๊ฐ ์ฝ๋ค์! ๊ฐ ์ํ์ ๋ํ ์ค๋ช
๋ ๊ณต์๋ฌธ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ , UIKit ์ด ์ ํ๋ฆฌ์ผ์ด์
์ Scene์..
[iOS - WWDC2019] UISceneDelegate: Multiple Window๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ์ค๊ณ
[iOS - WWDC2019] UISceneDelegate: Multiple Window๋ฅผ ์ฌ์ฉํ๋ ์ฑ์ ์ค๊ณ
2021.09.19๐ WWDC19 ์ธ์
์ ๋ฒ์ญํ๋ฉฐ ๊ณต๋ถํ ๊ธ์
๋๋ค! ์์ญ์ด๋ ์ค์ญ์ด ์์ ์ ์์ผ๋ ์์ธํ ๋ด์ฉ์ ์ธ์
์์์ ์ฐธ๊ณ ํด์ฃผ์ธ์! App Delegate์ Scene Delegate iOS 12๊น์ง์ App Delegate ์ ์ญํ ์ ๋จผ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. App Delegate๋ ๋ ๊ฐ์ง ์ฃผ์ํ ์ญํ ์ ๋ด๋นํ๊ณ ์์์ต๋๋ค. ์ฒซ๋ฒ์งธ๋ ํ๋ก์ธ์ค ๋ ๋ฒจ์ ์ด๋ฒคํธ๋ฅผ ์ ํ๋ฆฌ์ผ์ด์
์ ์๋ฆฌ๋ ๊ฒ์ด์์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ์์๋๊ฑฐ๋, ์ข
๋ฃ๋ ๋, AppDelegate๋ฅผ ํตํด ์ด๋ฒคํธ๋ค์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ ๋ฌ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ฒ์งธ ์ญํ ์ ์ ํ๋ฆฌ์ผ์ด์
์ด ์์ ์ UI์ ์ํ๋ฅผ ์ ์ ์๊ฒ๋ ํ๋ ๊ฒ์ด์์ต๋๋ค. DidEnterForeGround, WillResignActive์ ๊ฐ์ ๋ฉ์๋๋ฅผ ํตํด ์์คํ
์UI์ ์ํ๋ฅผ ์ ์ ์์์ฃ . A..
[Swift] Swift์ ์ฐ์ฒด๊ตญ, NotificationCenter
[Swift] Swift์ ์ฐ์ฒด๊ตญ, NotificationCenter
2021.09.19NotificationCenter ์ต์ ๋ฒ ํจํด? ๋ฐํ-๊ตฌ๋
ํจํด? ์ด์ ํฌ์คํธ์์ ์ต์ ๋ฒ ํจํด๊ณผ ํ์ญํจํด์ผ๋ก ๋ถ๋ฆฌ๋ ๋ฐํ-๊ตฌ๋
ํจํด์ ์ ๋ฆฌํ ์ ์ด ์์์ต๋๋ค. ๋ ํจํด์ ๋ํ ์ดํด๊ฐ ์์ผ๋ฉด ํจ์ฌ ๋ ์ฌ๋ฏธ์์ผ๋ ๋ ํฌ์คํธ๋ฅผ ๋จผ์ ์ฐธ๊ณ ํด์ฃผ์ธ์! [์ต์ ๋ฒํจํด][ํ์ญํจํด] ์ค์ํํธ์ NotificationCenter๋ ๋ฐํ-๊ตฌ๋
ํจํด๊ณผ ์ ์ฌํ๊ฒ ๋์ํฉ๋๋ค. ๋ฐํ-๊ตฌ๋
ํจํด์์ ์ด๋ฒคํธ ๋ธ๋ก์ปค์ ํด๋นํ๋ ์ค๊ฐ์์ ์ญํ ์ NotificationCenter ๊ฐ์ฒด๊ฐ ํ๊ฒ๋์ฃ . NotificationCenter๋ผ๋ ์ด๋ฆ์ฒ๋ผ ์์ ์๊ฒ ๋ฑ๋ก๋ ์น๊ตฌ๋ค์๊ฒ ์๋ฆผ์ ๋ณด๋ด์ฃผ๋ ๊ฐ์ฒด๊ฐ NotificationCenter์
๋๋ค! ์ฉ์ด ์ ๋ฆฌ ๋จผ์ NotificationCenter์์ ์ฌ์ฉํ๋ ์ฉ์ด๋ถํฐ ์ ๋ฆฌํ๊ฒ ์ต๋๋ค. Notification..
[iOS] UITapGestureRecognizer: ํ๋ฉด ํญ ๋์ ์ธ์ํ๊ธฐ
[iOS] UITapGestureRecognizer: ํ๋ฉด ํญ ๋์ ์ธ์ํ๊ธฐ
2021.09.13UITapGestureRecognizer ์ค๋์ GestureRecognizer์ ์๋ธํด๋์ค ์ค ํ๋์ธ UITapGesture๋ฅผ ์ฌ์ฉํด์ ํญ ๋์์ ์ธ์ํ๋ ์์
์ ํด๋ณด๊ฒ ์ต๋๋ค. ์ค๋์ ๋ชฉํ๋ ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ UITapGestureRecognizer๋ฅผ ์ถ๊ฐํด์ ์ด๋ค ์์๊ฐ ํญ ๋์๋์ง ํ์ํด์ฃผ๋ ๊ฒ์
๋๋ค. ์คํ ๋ฆฌ๋ณด๋๋ก ์ถ๊ฐํ๊ธฐ TapGestureRecognizer๋ ์คํ ๋ฆฌ๋ณด๋๋ก ์ถ๊ฐํ ์๋ ์๊ณ , ์ฝ๋๋ก ์ถ๊ฐํ ์๋ ์์ต๋๋ค. ๋จผ์ ๊ฐํธํ๊ฒ ์คํ ๋ฆฌ๋ณด๋๋ก ์์
์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ Tap Gesture Recognizer๋ฅผ ์ ํํด์ ์ถ๊ฐํด์ค๋๋ค. ์ ์์ ์ผ๋ก ์ถ๊ฐ๊ฐ ๋์๋ค๋ฉด ์ผ์ชฝ์ Tap Gesture Recognizer๊ฐ ์ถ๊ฐ๋ฉ๋๋ค. ์ค๋ฅธ์ชฝ ์ธ์คํํฐ๋ฅผ ๋ณด๋ฉด Taps์ Touches์ ์ ๋๋ฅผ ์กฐ..
[iOS] UIImagePickerController: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ง ๋ถ๋ฌ์ค๊ธฐ
[iOS] UIImagePickerController: ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ง ๋ถ๋ฌ์ค๊ธฐ
2021.09.09์ฌ์ง ์จ๋ฒ์์ ์ฌ์ง ๋ถ๋ฌ์ค๊ธฐ ์ค๋ ์ ๋ฆฌํ ๋ด์ฉ์ iOS์ ์ฌ์ง์ฒฉ์ ์ ๊ทผํด ์ฌ์ง์ ๋ถ๋ฌ์ ์ ํ๋ฆฌ์ผ์ด์
๋ด์ ํ์ํ๋ ์์
์ ํ๋ฆ์
๋๋ค. ์ด๊ฑด ์จ๋ดค์ ๋ ์ ๋ฆฌ ์ํ๋ฉด ๋ฌด์กฐ๊ฑด ๊น๋จน๊ณ ๋ค์ ๊ตฌ๊ธ๋งํ๊ณ ์์ ๊ฒ ๊ฐ์์ ์์ํ ๋ ์ ๋ฆฌํฉ๋๋ค! ๋จผ์ ์๋์ ๊ฐ์ด ๊ธฐ๋ณธ์ ์ธ UI๋ฅผ ์ธํ
ํ๊ณ IBOutlet์ ์ ์ํ๋๋ฐ์, ์ด ํฌ์คํธ์ ๋ชฉํ๋ ํ๋ฉด์ ๋ณด์ด๋ ๋
ธ๋์ ๋ฒํผ์ ๋๋ ์ ๋ UIImageView์ ํด๋น ์ฌ์ง์ ํ์ํ๋ ๊ณผ์ ์ ๊ธฐ๋กํ๋ ๊ฒ์
๋๋ค! ๊ทธ๋ผ ์์ํด๋ณด๊ฒ ์ต๋๋ค ๐ 1. IBAction ์ค์ ๋จผ์ ๋ฒํผ์ด ๋๋ ธ์ ๋์ ๋์์ ์ ์ํ๊ธฐ ์ํด์ IBAction๋ถํฐ ์ ์ํด์ฃผ๊ฒ ์ต๋๋ค. ๋ง์ฐ์ค ์ฐํด๋ฆญ์ผ๋ก UIButton์ ์ ํํ๊ณ ๋ทฐ ์ปจํธ๋กค๋ฌ๋ก ๋๋๊ทธํ๋ฉด IBAction์ ์์ฑํ ์ ์์ต๋๋ค. import UIKit cl..
[iOS] UIStackView: Alignment์ Distribution
[iOS] UIStackView: Alignment์ Distribution
2021.09.03UIStackView ๐กA streamlined interface for laying out a collection of views in either a column or a row. ์คํ ๋ทฐ๋ ์คํ์ฒ๋ผ ์๋ธ ๋ทฐ๋ค์ ์์์ ๋์ ์ผ๋ก ๋ด๋ถ ํฌ๊ธฐ๋ ์์น๋ฅผ ์กฐ์ ํ ์ ์๋๋ก ํด์ฃผ๋ UIView ์
๋๋ค. ๊ฐ๋ก ๋ฐฉํฅ์ด๋ ์ธ๋ก ๋ฐฉํฅ์ ์ค์ ํ ์ ์๊ณ , ์คํ ๋ทฐ ๋ด๋ถ์ ์์๋ค์ ๊ฐ๊ฒฉ์ด๋ ๋๋น/๋์ด๋ ์๋์ผ๋ก ์กฐ์ ํ ์ ์์ต๋๋ค. ์น์์ ์ฌ์ฉํ๋ Flex ์ปจํ
์ด๋์ ์ ์ฌํฉ๋๋ค. ์คํ ๋ทฐ๋ arrangedSubView ๋ผ๋ UIView ๋ฐฐ์ด์ ์ฌ์ฉํ๊ณ ์ด๊ณณ์ ๋ทฐ๋ค์ ๋ชจ์ ์์๋๋ก ๋ฐฐ์นํ๊ฒ ๋ฉ๋๋ค. ์ด ์๋ธ ๋ทฐ๋ค์ ์ฌ๋ฌ ์์ฑ์ ํตํด ๋ฐฐ์นํ ์ ์๋๋ฐ, ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ฑ์ด axis, distribution, alignme..
[Swift] Struct vs. Class (2), Struct์์ ์ฐธ์กฐ ํ์
, Class ์์ ๊ฐ ํ์
๋ณ์๊ฐ ์์ ๋
[Swift] Struct vs. Class (2), Struct์์ ์ฐธ์กฐ ํ์ , Class ์์ ๊ฐ ํ์ ๋ณ์๊ฐ ์์ ๋
2021.08.26๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
! ์ด์ ํฌ์คํธ์์ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๊ฒ์ ๊ณต๋ถํ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ๋ง์ฝ ๊ตฌ์กฐ์ฒด ์์ ํด๋์ค์ ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ, ๊ทธ๋ฆฌ๊ณ ํด๋์ค ์์ ๊ตฌ์กฐ์ฒด ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์ด๋จ๊น์? ํด๋์ค ์์ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ๋๋ก ์์ฑํด์ ํ์ธํด๋ด
์๋ค. import Foundation struct ValueType { var number = 2 } class ReferenceType { var number = 1 var structInstance = ValueType() } let classInstance = ReferenceType() let classInstanceCopy = classInstance classInstanceCopy.numbe..
[Swift] Struct vs. Class (1), ์ธ์ ๋ญ ์จ์ผํ ๊น?
[Swift] Struct vs. Class (1), ์ธ์ ๋ญ ์จ์ผํ ๊น?
2021.08.25๊ตฌ์กฐ์ฒด๋ ํด๋์ค๋.. ๊ณ ๊ฒ์ด ๋ฌธ์ ๋ก๋ค.. ์๋ก์ด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ํ๊ฑฐ๋ ํ์
์ ๋ง๋ค ๋, ๊ตฌ์กฐ์ฒด์ ํด๋์ค ์ค ์ด๋ค ๊ฒ์ ์ฌ์ฉํ ์ง ๊ณ ๋ฏผํ๊ณค ํฉ๋๋ค. ์ค๋์ ๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด์ ๋ํด์ ์์๋ณด๊ณ ์ด๋ค ์ํฉ์ ์ด๋ค ๋ฐฉ์์ ์ ํํ๋ฉด ์ข์์ง ๊ณ ๋ฏผํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ํ์
vs. ์ฐธ์กฐ ํ์
๊ตฌ์กฐ์ฒด์ ํด๋์ค์ ์ฐจ์ด ์ค ๊ฐ์ฅ ๋๋๋ฌ์ง๋ ๊ฒ์ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๊ฒ์
๋๋ค. ๋ฐ๋ผ์ ๊ตฌ์กฐ์ฒด์ ์ธ์คํด์ค๋ ๋ณ์์ ๋์
๋๊ฑฐ๋ ๋ค๋ฅธ ํจ์๋ก ์ ๋ฌ๋ ๋, ๋ฉค๋ฒ๋ค์ ๊ฐ์ด ๊ทธ๋๋ก ๋ณต์ฌ๋ ์๋ก์ด ์ธ์คํด์ค๊ฐ ์์ฑ๋๊ณ , ํด๋์ค๋ ํ์ฌ ์ธ์คํด์ค์ ์ฐธ์กฐ ๊ฐ์ด ์ ๋ฌ๋ฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ตฌ์กฐ์ฒด๋ ๊ฐ ํ์
, ํด๋์ค๋ ์ฐธ์กฐ ํ์
์ด๋ผ๋ ๋ง์ ๊ณง ๋ ํ์
์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ๋ค๋ฅด๊ฒ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ตฌ์กฐ์ฒด - ์คํ ์์ญ ๊ตฌ..
[iOS] Segue: Show vs. Show Detail vs. Present Modality vs. Popover
[iOS] Segue: Show vs. Show Detail vs. Present Modality vs. Popover
2021.08.24Segue ๋ฅผ ์ค์ ํ ๋ ์ง์ ํ ์ ์๋ ์ต์
๋ค์ธ Show, Show Detail, Present Modally, Present as Popover์ ์ฐจ์ด์ ๋ํด ์์๋ด
์๋ค. Show ๋ชฉ์ ์ง ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ด๋น๊ฒ์ด์
์คํ์ ์์ต๋๋ค. Navigation Controller ๊ฐ ์ค์ ๋์ด ์์ ๋๋ ๋ชฉ์ ์ง ๋ทฐ ์ปจํธ๋กค๋ฌ๊ฐ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฌ๋ผ์ด๋ ๋๋ฉฐ ๋ํ๋๊ณ , ์๋ก์ด ๋ทฐ ์ปจํธ๋กค๋ฌ์๋ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ด ์์ฑ๋ฉ๋๋ค. ๋ด๋น๊ฒ์ด์
์ปจํธ๋กค๋ฌ๊ฐ ์์ ๋๋ Present Modally๊ฐ ์ ์ฉ๋ฉ๋๋ค. Show Detail Show detail ์ ์คํ๋ฆฟ ๋ทฐ์์ ์ฌ์ฉ๋ฉ๋๋ค. ๋ ๊ฐ์ ํ๋ฉด์ผ๋ก ๋๋์ด์ง ์คํ๋ฆฟ ๋ทฐ์์ ๋ณด์กฐ ๋ทฐ์ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ค๋ฅธ ์ปจํธ๋กค๋ฌ๋ก ๋์ฒดํฉ๋๋ค. ๋ง์ฝ ์คํ๋ฆฟ ๋ทฐ๊ฐ ์๋๋ผ๋ฉด Present Modally๋ก ..
[HIG] App Architecture - Settings
[HIG] App Architecture - Settings
2021.08.22๐ก ๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ๋ชฉ์ ์ผ๋ก ๋ฒ์ญํ์ฌ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌ๋ง ํ ๊ธ์
๋๋ค. ์ ๋ฌธ์ ํฌํจํ๊ณ ์์ง ์์ผ๋ ์์ธํ ๋ด์ฉ์ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค! https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/settings/ Settings - App Architecture - iOS - Human Interface Guidelines - Apple Developer Settings Some apps may need to provide a way to make setup or configuration choices, but most apps can avoid or delay doing so. Successful app..
[HIG] App Architecture - Accessing User Data and Resources
[HIG] App Architecture - Accessing User Data and Resources
2021.08.22๐ก ๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ๋ชฉ์ ์ผ๋ก ๋ฒ์ญํ์ฌ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌ๋ง ํ ๊ธ์
๋๋ค. ์ ๋ฌธ์ ํฌํจํ๊ณ ์์ง ์์ผ๋ ์์ธํ ๋ด์ฉ์ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค! https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/accessing-user-data/ Accessing User Data - App Architecture - iOS - Human Interface Guidelines - Apple Developer Accessing User Data and Resources User privacy is paramount. To help people trust your app, it’s crucial to be transpare..
[HIG] App Architecture - Navigation
[HIG] App Architecture - Navigation
2021.08.22๐ก ๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ๋ชฉ์ ์ผ๋ก ๋ฒ์ญํ์ฌ ๊ฐ๋ตํ๊ฒ ์ ๋ฆฌ๋ง ํ ๊ธ์
๋๋ค. ์ ๋ฌธ์ ํฌํจํ๊ณ ์์ง ์์ผ๋ ์์ธํ ๋ด์ฉ์ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด์๊ธธ ๊ถํด๋๋ฆฝ๋๋ค! https://developer.apple.com/design/human-interface-guidelines/ios/app-architecture/navigation/ Navigation - App Architecture - iOS - Human Interface Guidelines - Apple Developer Navigation People tend to be unaware of an app’s navigation until it doesn’t meet their expectations. Your job is to implement navigation ..