We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
TIL์ ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ๋ค์ด์ง ๋ง์๋ค.
๋ค์ ํ์ผ๊ณผ ๊ด๋ จ์ด ์๋ค.
์ฑ์ ์๋ช ์ฃผ๊ธฐ๋ 5๊ฐ์ง๋ก ๋๋๊ธฐ ์ด์ ์ ์คํ/์ข ๋ฃ ๊ทธ๋ฆฌ๊ณ Foreground/Background ์ํ๋ก ๋๋๋ค.
์ฑ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์ ํ๊ฐ ์ค๊ฑฐ๋, ์๋ฆผ์ด ์ธ๋ฆฌ๊ฑฐ๋ ๋๋ ๋ค๋ฅธ ์ฑ์ผ๋ก ์ ํํ ๋ ๋์์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์์ดํฐ์ ํ๋ฉด์ ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ด ํ ํ๋ฉด์ ์ฐจ์งํ๊ธฐ ์ํด์๋ ์ฑ ๋ง๋ค ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ ๊ฒ๋ ํ์ํ๊ณ , ์ฑ ๋ด์์๋ ํ์ฌ ์ด๋ค ํ๋ฉด์ด ๋ณด์ฌ์ ธ์ผ ํ ์ง๋ ์ค์ํ ๋ถ๋ถ์ด ๋๋ค. ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋ถ๋ถ์ด ์ฑ์ ์ํ, ์ฆ ์๋ช ์ฃผ๊ธฐ์ด๋ค. ์ฑ์ ์ํ๋ ํฌ๊ฒ ๋๋๋ฉด ์ฑ์ ์ฌ์ฉํ๊ณ ์์ ๋(ํ๋ฉด์ ์ฑ์ ๋์ด ์ํ), ์ฑ์ ์ฌ์ฉํ๊ณ ์์ง ์์ ๋๋ก ๋๋ ์ ์๋ค. ์ข ๋ ๋ํ ์ผํ๊ฒ ๋๋๋ฉด 5๊ฐ์ง ์ํ๋ก ๋๋ ์ ์๋ค.
์์ธํ ๋ด์ฉ์ ๋ค๋ฅธ ๊ธ์์ ์ดํด๋ณด๊ณ ์ ํ๋ค.
Not Running ์ฑ์ด ์คํ๋์ง ์๊ฑฐ๋, ์ข ๋ฃ๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
Active Active ์ํ์ธ ์ฑ์ ํ๋์ด๋ค.
Inactive ์ ํ๊ฐ ์ค๊ฑฐ๋ ๋๋ ์๋์ด ์ธ๋ฆฌ๊ฒ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ปจํธ๋กค ํ ์ ์๋ ์ํ๊ฐ ๋๋ค. ๋ค์ ์ฑ์ ์ฌ์ฉํ๊ฒ ๋๋ ์๊ฐ Active๋ก ๋์์ค๊ฒ ๋๋ค. Active์ Inactive ์ํ๋ฅผ ๋ฌถ์ด์ Foreground๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Background ์ฑ์ด ํ๋ฉด์ ๋ณด์ด์ง ์์ง๋ง ์ฝ๋๋ฅผ ์คํํ๊ณ ์๋ ์ํ๋ฅผ ๋งํ๋ค.
Suspend ์๋์ผ๋ก ์ฑ์ ์ง์ฐ๊ฒ ๋๋ฉด Suspend ์ํ๊ฐ ๋๋ค. ์์คํ ์ด ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ฑ์ ์์ ํ ์ข ๋ฃํ๊ฒ ๋๋๋ฐ ์ด ๋ ์ฑ์ Not Running ์ํ๋ก ์ ์ด๋๊ฒ ๋๋ค.
๊ฐ ๋ฉ์๋(- ๋ผ์ดํ ์ฌ์ดํด)์์ ์ด๋ค ํ์๋ฅผ ํ ์ ์์์ง ๊น๊ฒ ๊ณ ๋ฏผํด ๋ณธ ์ ์์๋๋ฐ ์ค๋ ์์น ๊ฐ์์์ ์์๋ก ๋ค๋ ค์ฃผ์ ๋ด์ฉ์ด ํฅ๋ฏธ๋ก์์ ๊ฐ์ ธ์๋ณด์๋ค.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // - ์ฌ์ฉ์ ์ ๋ณด ์ฒดํฌ // - ๋ฐ์ดํฐ ์ฒดํฌ // - ์ ๋ฐ์ดํธ ์ต์ ํ ํ์ธ // ์ํํ ์ ์๋ค. (์ด ์๊ฐ ๋์ ์ด๋ค ๋ก์ง๋ ์ํ๋์ง ์๋๋ค. ๊ทธ๋ ๊ธฐ์ ๋ก์ง์ด ๋ณต์กํ๋ฉด ์ง์ํ๋ ๊ฒ์ด ์ข๋ค.) sleep(2) return true } func applicationDidEnterBackground(_ application: UIApplication) { // - ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋ ์ํ๋ก ๋ค์ด๊ฐ ๋ // - Melon, Youtube : ๋ง์ฝ์ ์ฌ์ฉ์๊ฐ ํ๋ฆฌ๋ฏธ์ ๊ฒฐ์ ์์ด๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋์๊ฐ๋๋ก(play) ํ๊ณ , // - ๊ทธ๊ฒ ์๋๋ผ๋ฉด ์ค๋จ(stop)์ํค๋ผ๊ณ ๋ถ๊ธฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ } // โ๏ธ ์์๊ฐ ๋๋ฌด ํฅ๋ฏธ๋กญ๋ค. func applicationWillEnterForeground(_ application: UIApplication) { // - ํ๋ฆฌ๋ฏธ์ ๊ฒฐ์ ์๊ฐ ์๋ ์ ์ ์๊ฒ ๊ฒฐ์ ์ ๋ ํ์ ์ ๋์ธ ๋ ์ฌ์ฉํ ์ ์๋ค. (Background -> Active) // - ์นด์นด์คํก ์ฌ์ฉ ์ : ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฑ ์ฌ์ฉ ์ํ๋ก ๋ค์ ๋์์ฌ ๋ ์ ๊ธ ํ๋ฉด์ ๋์ฐ๋ ์ํฉ // - ๊ธ์ต ์ฑ ์ฌ์ฉ ์ : ๋ฐฑ๊ทธ๋ผ์ด๋์ ์์ ๋, ํ๋ฉด์ด ์ ๋ณด์ด๋๋ก ์ฒ๋ฆฌ (ํ๋ฉด ํ๋๋ฅผ ์์ชฝ์ ์์ฐ๋ ์์ผ๋ก ์ฒ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ค์ ์ฑ์ด ์คํ๋๋ฉด ํ๋ฉด์ ๊ฑท์ด๋ด๋ ์์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ) }
iPad OS์ ๋์ ๋ ์๋ก์ด ๋ค์ค ์ฐฝ ์ง์๊ธฐ๋ฅ์ด ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ค. ๊ทธ ๊ฒฐ๊ณผ AppDelegate์ ์์ ์ ๋๊ฐ๋ก ๋ถํ ํ๋ค. AppDelegate๋ ์ ํ๋ฆฌ์ผ์ด์ life Cycle ๋ฐ ์ค์ ์ ๋ด๋นํ๊ณ , SceneDelegate๋ ํ๋ฉด (Scenes)์ ํ์๋๋ ๋ด์ฉ์ ์ฒ๋ฆฌํ๊ณ ์ฑ์ด ํ์๋๋ ๋ฐฉ์์ ๊ด๋ฆฌํ๋ค.
์๋๋ ๊ฒฐ๊ตญ ๋ค ๊ฐ์ ๋ง์ด๋ค..ใ ใ Scene์ด ๋ฑ์ฅํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฅํด์ง ์ผ์ด๋ค.
๋์ผํ ์ฑ์ 3๊ฐ ์ด์ ๋์ ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ๋๋ Background, ํ๋๋ Foreground, ํ๋๋ Suspend ์ํ๊ฐ ๋ ์ ์๋ค. ๊ทธ๋ผ ์ด๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์๊น. ์ฌ๊ธฐ์ Scene(Session)์ ๊ฐ๋ ์ด ๋ฑ์ฅํ๊ฒ ๋๋ค. iPad์์ ์ฑ์ ๋์ฐ๋ ๊ฒ์ Scene์ ๋์ด๋ค์ ๊ฐ๋ ์ด ๋๋ค.
App Delegate ์คํ ์ดํ์ Scene Delegate์๊ฒ ๊ถํ์ ์์ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ผ์ด 2๊ฐ๋ก ๋๋๋ค. ์๋ก ์ญํ ์ ๋ถ๋ฆฌํ๊ฒ ๋ ๊ฒ์ด๋ค. ์ํ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 12.4๋ก os๋ฅผ ์คํํ๋ฉด ๊ธฐ์กด์๋ SceneDelegate ํ์ผ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฒ์ ๋ง๋ค ๋ฒ๊ฑฐ๋กญ๊ฒ ๋ถ๊ธฐ์ฒ๋ฆฌ๊ฐ ๋ค์ด๊ฐ์ผ ํ๋๊น iOS12๊น์ง ๋ฐ๋์ ๋์์ ์์ผ์ผ ํ ๊น์ ๋ํ ๋ฌผ์์ด ์๊ธด๋ค. ์ด์ ์ฌ์ฉ์์ ๊ธฐ๊ธฐ ๋ฒ์ ์ ๋ฐ์ดํธ๋ ์ด๋ ์ ๋ ๋์๊ธด ํ์ง๋ง ์์ง๊น์ง๋ ์ด๋ ์ ๋ ๊ณ ๋ ค๋ฅผ ํด์ค์ผ ํ ๊ฒ์ด๋ค.
iOS13๋ถํฐ ์ง์ํ์ฌ, ์์คํ ์ ์ผ๋ก ์ ์ฉ์ด ๋์๋ค. Xcode์ ๋ํดํธ ์ค์ ์ ๋ผ์ดํธ๋ชจ๋, ๋คํฌ๋ชจ๋๋ฅผ ๋ชจ๋ ์ง์ํ๋ ์ํ์ด๋ค. ๊ทธ๋ ๊ธฐ์ ํ ๊ฐ์ง๋ก ์ ํํ๊ณ ์ถ์ผ๋ฉด ๋ฐ๋ก ์ค์ ์ด ํ์ํ๋ค. ์๋์์ ํ์ธ ๋ฐ๋.
์ฑ์ด ์คํ๋๋ ๋์ค, ์ ํ๊ฐ ํ์ ํํ๋ก ์จ๋ค๊ณ ํด์ Inactive ์ํ๊ฐ ๋๋ ๊ฒ์ ์๋๋ค. ์ ํ ํ๋ฉด์ผ๋ก ๋์ด๊ฐ์ ๋ Inactive ์ํ๊ฐ ๋๋ค. ์์คํ ์ ์ํด ๊ตฌํ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ์ ์ Active ์ํ๋ก ๋ณด์ง ์๋๋ค.
pip ๋ชจ๋๋ก ๋ ์๋๋ผ๋ ํ์ฌ active ์ํ๋ก ๋์์ง ์ฑ์ ์ํ๊ฐ ์ ์ง๋๋ค.
pip ๋ชจ๋๋ ์ฐฝ ๋ชจ๋๋ฅผ ์๋ฏธํ๋ค. ์ ํ๋ธ์์ ์ฐฝ ๋ชจ๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก๋ค.
@available(iOS 13.0, *) // 13.0 ๋ฒ์ ์ด์์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
Snippet ์์ฑํด์ ์ฌ์ฉํ์ :)
swift5.6๋ถํฐ unavailable keyword๊ฐ ์๊ฒผ๋ค๊ณ ํ๋ค. (์คํธ๋ผ.. ์ฐพ์๋ด์ผ์ง)
๋ ๋ง์ ๋ด์ฉ์ TIL - #available, @available ์ฐธ๊ณ ๋ฐ๋.
ํํ๋ฉด์ ๋ฐ์์ ์๋ก ์ฌ๋ฆฌ๋ฉด ์ฌ์ฉํ๋ ์ฑ์ ๋ชฉ๋ก์ ์ญ ๋ณผ ์ ์๋ค. ๋ชจ๋ ์ฑ์ด Background ์ํ์ ์๋ ๊ฒ์ ์๋๋ค. ์ค์ ๋ก os์ ์ํด ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ๊ฐ ์์์ ์งํ๋๋ค. ๊ทธ ์ฐจ์ด๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด Background ์ํ๋ก ์ฑ์ ์ค๋ ์ผ๋๊ณ ํ๋์ฉ ํ์ธํด๋ณด์. ์ด๋ค ์ฑ์ Launchscreen๋ถํฐ ์์๋๋ ์ฑ์ด ์๊ณ , ์ด๋ค ์ฑ์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉํ ํ๋ฉด์ด ๋์ฌ ๊ฒ์ด๋ค. ์ ์๋ Not Running ์ํ๊ฐ ๋์ด๋ฒ๋ฆฐ ๊ฒ์ด๊ณ , ํ์๋ Background ์ํ์ธ ๊ฒ์ด๋ค.
๋ชจ๋ ์ฑ์ด Background ์ํ์ ์๋ ๊ฒ์ ์๋๋ค. ์ค์ ๋ก os์ ์ํด ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ๊ฐ ์์์ ์งํ๋๋ค. ๊ทธ ์ฐจ์ด๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด Background ์ํ๋ก ์ฑ์ ์ค๋ ์ผ๋๊ณ ํ๋์ฉ ํ์ธํด๋ณด์. ์ด๋ค ์ฑ์ Launchscreen๋ถํฐ ์์๋๋ ์ฑ์ด ์๊ณ , ์ด๋ค ์ฑ์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์ฌ์ฉํ ํ๋ฉด์ด ๋์ฌ ๊ฒ์ด๋ค. ์ ์๋ Not Running ์ํ๊ฐ ๋์ด๋ฒ๋ฆฐ ๊ฒ์ด๊ณ , ํ์๋ Background ์ํ์ธ ๊ฒ์ด๋ค.
๋๋ฐ์ด์ค ์ฑ๋ฅ, ์ฉ๋, ๋ฐฐํฐ๋ฆฌ, ์ ์ ๋ ฅ ๋ชจ๋ ๋ฑ์ ๋ฐ๋ผ์๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฆฌ ์ํฉ์ด ๋ฌ๋ผ์ง๋ค.
๋คํฌ๋ชจ๋ on/off์ ๋ฐ๋ผ์ Label์ ์์์ด ๋ณ๊ฒฝ๋๊ณ ์๋ค.
๋ ๋ค ๊ฒ์์์ธ ๊ฒ ๊ฐ์๋ฐ ๋ฌด์จ ์ฐจ์ด๊ฐ ์์ง? ๋คํฌ๋ชจ๋๋ฅผ ์ ์ฉ์์ผ๋ณด์. Black์ฒ๋ผ ์์์ ์ด๋ฆ์ด ์ ํํ๊ฒ ๋ช ์๋ ๊ฒ์ ์ด๋ค ๋ชจ๋์์๋ ์ง ์์์ด ์ ์ง๋๋ค. (ํ ๊ฐ์ง ์์์ผ๋ก ์ ์ง๋จ!)
iOS13๋ถํฐ ๋ฑ์ฅํ์๋ค. ๋คํฌ๋ชจ๋ ๋์์ ์ํด ๋ ๊ฐ์ง ์ปฌ๋ฌ๋ฅผ ์ง๋๊ณ ์๋ค.
์ฌ์ฉ์๊ฐ ์ผ๋ฐ์ ์ผ๋ก ์ ์ํ ์ปค์คํ ์ปฌ๋ฌ๋ ๋ฐ์ (๋คํฌ ๋ชจ๋์ ๋ฐ๋ผ ์์ ๋ฐ์ )๋์ง ์๋๋ค. ๊ฑฑ์ ๋ง๋ผ, Asset Catalog๋ฅผ ์ด์ฉํด์ ๋คํฌ๋ชจ๋์ ๋์ํ ์ ์๋ ์์์ ๋ง๋ค ์ ์๋ค.
๋ช ์์ ์ผ๋ก ์ฌ์ฉํ์ง ์๊ฒ ๋ค๊ณ ์ค์ ํ์. Info.plist์์ ์ง์ ํ ์ ์์. Info.plist๋ source code๋ก๋ ๋ณผ ์ ์์ผ๋ ์ทจํฅ๊ป ์์ ํ์.
value ๊ฐ์ ์๋ฌธ์๋ก ์ฐ๋ฉด ๋ฆฌ์ ์ฌ์ ๊ฐ ๋ ์ ์๋ค ใ ใ
UIUserInterfaceStyle๊ณผ Appearance๋ ๊ฐ์ ์ฉ์ด์ด๋ค. ๋ฒ์ ์ ๋ฐ์ดํธ ๋๋ฉด์ ์ด๋ฆ์ด ๋ฐ๋ ๊ฒ์ด๋ ์ฐธ๊ณ ! ๊ฐ์ธ ์ฑ์ด๋ ํฌ๊ฒ UI๊ฐ ์ค์ํ ํ๋ก์ ํธ๊ฐ ์๋๋ผ๋ฉด ๋์์ ํ์ง ์๋ ๊ฒ์ด ๋ฆฌ์์ค๊ฐ ์กฐ๊ธ์ ๋ ๋๋ ๋ฐฉ๋ฒ์ผ ๊ฒ ๊ฐ๋ค. ๋คํฌ๋ชจ๋๋ง ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์๋ค. ํ ๊ฐ์ง ์์๋ง ์ฐ๋ ๋ฐฉ์์ผ๋ก ๋์ผํ๊ฒ ํด์ฃผ๋ฉด ๋๋ค. (Light ๋ผ๊ณ ์ค์ ํ๋ฉด ๋จ)
๊ฐ์ธ ์ฑ์ด๋ ํฌ๊ฒ UI๊ฐ ์ค์ํ ํ๋ก์ ํธ๊ฐ ์๋๋ผ๋ฉด ๋์์ ํ์ง ์๋ ๊ฒ์ด ๋ฆฌ์์ค๊ฐ ์กฐ๊ธ์ ๋ ๋๋ ๋ฐฉ๋ฒ์ผ ๊ฒ ๊ฐ๋ค. ๋คํฌ๋ชจ๋๋ง ์ฐ๋ ๋ฐฉ๋ฒ์ ๋ฐ๋ก ์๋ค. ํ ๊ฐ์ง ์์๋ง ์ฐ๋ ๋ฐฉ์์ผ๋ก ๋์ผํ๊ฒ ํด์ฃผ๋ฉด ๋๋ค. (Light ๋ผ๊ณ ์ค์ ํ๋ฉด ๋จ)
https://developer.apple.com/design/resources/
๋คํฌ๋ชจ๋, ๋ผ์ดํธ๋ชจ๋ ์ปฌ๋ฌ ์ ์ด ๋์์ธ ๋์ด ์๋ ๊ฒ ํฅ๋ฏธ๋กญ๋ค. ๊ทธ ์ธ์ UI Components๋ ํ์ธํ ์ ์๋ค.
Device Orientation์์ ์ค์ ๋๋ ์ ํ์ด ๊ฐ๋ฅํ๋ค. ๊ธฐ๊ธฐ ์ ์ฅ์์ ๊ฐ๋ก๋ชจ๋๋ฅผ ํ๋จํ๋ ๊ฒ์ ๊ฐ์๋๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋จํ๋ค.
TARGETS - Build Settings๊น์ง ๋ฐ๋์ด์์ด์ผ ์ ์ ์ฉ์ด ๋ ๊ฒ์ด๋ค. General์์ ์ผ๋ถ ์ค์ ์ ์งํํด๋ Build Settings์ ์ ์ฉ์ด ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. Build Settings๋ ๊ฐ๋ฐ์๊ฐ ์์ฃผ ๋ณ๊ฒฝํ๋ ๋ด์ฉ๋ค์ด ๋ด๊ฒจ์๋ค.
General์์ ์ผ๋ถ ์ค์ ์ ์งํํด๋ Build Settings์ ์ ์ฉ์ด ์ ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. Build Settings๋ ๊ฐ๋ฐ์๊ฐ ์์ฃผ ๋ณ๊ฒฝํ๋ ๋ด์ฉ๋ค์ด ๋ด๊ฒจ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Project์์ ์ค์ ํ ๊ฐ์ด Target์ผ๋ก ์์์ด ๋๋ค. Target์ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์ค์ ์ด ๋ฌ๋ผ์ง ์ ์๋ค. Widget, Keyboard, ..., Extensions ๋ฑ ์ฌ๋ฌ ๊ฐ์ Target์ด ์๊ธธ ์ ์๋ค.
Target์ ์ฌ๋ฌ ๊ฐ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์ค์ ์ด ๋ฌ๋ผ์ง ์ ์๋ค. Widget, Keyboard, ..., Extensions ๋ฑ ์ฌ๋ฌ ๊ฐ์ Target์ด ์๊ธธ ์ ์๋ค.
์ค์ง์ ์ผ๋ก ๋์ ๋ณด์ด๋ ํ๋ฉด์ ์๋๋ค. ๋น์ถฐ์ฃผ๋ ๊ฑฐ์ธ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค. (๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋น์ถฐ์ฃผ๋ ํต๋ก) ์ด๋ค ๋ฒ์ ์ด๋ UIWindow๋ฅผ ์ฌ์ฉํ๋ค.
์์ดํฐ์ ๋จ์ผ ํ๋ฉด์ธ๋ฐ ์ด๋ค ๋ทฐ ์ปจํธ๋กค๋ฌ๋ฅผ ๋ณด์ฌ์ค ์ ์์๊น? UIWindow๊ฐ ๊ทธ๊ฒ์ ๊ด์ฅํ๋ค.
UIWindow๊ฐ ๊ทธ๊ฒ์ ๊ด์ฅํ๋ค.
13.0 ์ด์ ๋ฒ์ ์์ ํ๋ฉด์ ๋น์ถฐ์ฃผ๊ธฐ ์ํด์๋ window ํ๋กํผํฐ๋ฅผ AppDelegate์์ ์ ์ธํด์ฃผ์ด์ผ ํ๋ค. ์ App Delegate์์ window ํ๋กํผํฐ๋ฅผ ์ ์ธํด์ค์ผ ํ๋์? ์ ๊ทธ๋ฌ๋ฉด ๊น๋งฃ๊ฒ ํ๋ฉด์ด ๋์จ๋ค. iOS13์ด์ ์๋ Scene Delegate ๊ฐ๋ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
์ App Delegate์์ window ํ๋กํผํฐ๋ฅผ ์ ์ธํด์ค์ผ ํ๋์? ์ ๊ทธ๋ฌ๋ฉด ๊น๋งฃ๊ฒ ํ๋ฉด์ด ๋์จ๋ค. iOS13์ด์ ์๋ Scene Delegate ๊ฐ๋ ์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
@main class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { sleep(2) return true } }
time sleeping์ ํตํด์ ๋ฐ์น ์คํฌ๋ฆฐ์ ๋ก๋ฉ ์๊ฐ์ ์กฐ์ ํ ์๋ ์์ผ๋ ๊ทธ๋ ๊ฒ ๊ถ์ฅํ์ง๋ ์๋ ๋ฐฉ๋ฒ์ด๋ค. AppDelegate์์ Window ํ๋กํผํฐ๋ฅผ ์ ์ธํ๋ฉด iOS 12 ~ 15 ๋ชจ๋ ๋์ ๊ฐ๋ฅ
text ํ๋กํฐํผ์ placeholder ํ๋กํผํฐ๋ ๋ค๋ฅด๋ค. (์์ญ ๊ตฌ๋ถํด๋ณด๊ธฐ)
Button์ State๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋ค. ๊ทธ ์ค์์ normal, highlighted๋ฅผ ๋จผ์ ์ดํด๋ณด์
Button์ IBAction์ ์ฐ๊ฒฐํ ๋๋ sender์ ํ์ ์ Any๊ฐ ์๋ UIButton์ผ๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค. ์ ์ผ๊น?
๋ฌผ๋ฆฌ์ (ํ๋์จ์ด) ํค๋ณด๋๊ฐ ์ฐ๊ฒฐ ํด์ - ๊ทธ๋ผ ์๋์ผ๋ก ํ ์คํธ ํ๋์ ๊ฐ์ ์ ๋ ฅํ๋ ค๊ณ ํ ๋ ์ํํธ์จ์ด ํค๋ณด๋๊ฐ ์ฌ๋ผ์จ๋ค. ์ํํธ์จ์ด ํค๋ณด๋ ์ง์ ์ฌ๋ฆฌ๋ ๋ฒ (cmd+k)
๋ ๋ค ์ธํฐํ์ด์ค ๋น๋ ์์
ํค๋ณด๋๋ฅผ ๋ด๋ฆฌ๋ ์ํฉ์ ์ ๋ง ๋ค์ํ๋ค.
๊ฐ์ฅ ์๋ก ์ ์ธ ๋ฐฉ๋ฒ ๋ฒํผ์ ๋ฐํ ํฌ๊ธฐ ๋งํผ ์ฑ์ด๋ค. ๋ฒํผ์ ๋๋ ์ ๋ ์ก์ ์ ๋๊ฒ ์ง๋ง ๊ฒน์น๋ ์์ญ์ ๋ํ ๋์์ด ๋์ง ์๋๋ค. ์ฆ ํ ์คํธ ํ๋๋, ๋ค๋ฅธ ๋ฒํผ์ ๋ํ ๋์์ ์ํํ ์ ์๋ค.
์ ์ค์ฒ(tap gesture)์ ์ด์ฉ
์ค๋ธ์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ tap gesture๋ฅผ ์ฌ๋ฆฌ๋ฉด ๊ทธ๋ฅ Superview์ ์ฌ๋ผ๊ฐ๋ ๊ฑธ๊น?
@IBAction func tapGestureDidTapped(_ sender: Any) { view.endEditing(true) // ๋ชจ๋ ํธ์ง์ด ๋๋ฌ๋ค. }
The text was updated successfully, but these errors were encountered:
Taehyeon-Kim
No branches or pull requests
๐ชด Summary
๐ Detail
TIL์ ๋๋ฌด ๋ง์ ๋ฆฌ์์ค๋ฅผ ๋ค์ด์ง ๋ง์๋ค.
์ฑ์ ์๋ช ์ฃผ๊ธฐ (Life Cycle)
์ฑ์ 5๊ฐ์ง ์ํ
์ฑ์ ์ฌ์ฉํ๋ค๋ณด๋ฉด ์ ํ๊ฐ ์ค๊ฑฐ๋, ์๋ฆผ์ด ์ธ๋ฆฌ๊ฑฐ๋ ๋๋ ๋ค๋ฅธ ์ฑ์ผ๋ก ์ ํํ ๋ ๋์์ด ๋ฌ๋ผ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์์ดํฐ์ ํ๋ฉด์ ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ด ํ ํ๋ฉด์ ์ฐจ์งํ๊ธฐ ์ํด์๋ ์ฑ ๋ง๋ค ์ฐ์ ์์๋ฅผ ๊ฐ์ง๋ ๊ฒ๋ ํ์ํ๊ณ , ์ฑ ๋ด์์๋ ํ์ฌ ์ด๋ค ํ๋ฉด์ด ๋ณด์ฌ์ ธ์ผ ํ ์ง๋ ์ค์ํ ๋ถ๋ถ์ด ๋๋ค. ์ด๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ์ค์ํ ๋ถ๋ถ์ด ์ฑ์ ์ํ, ์ฆ ์๋ช ์ฃผ๊ธฐ์ด๋ค. ์ฑ์ ์ํ๋ ํฌ๊ฒ ๋๋๋ฉด ์ฑ์ ์ฌ์ฉํ๊ณ ์์ ๋(ํ๋ฉด์ ์ฑ์ ๋์ด ์ํ), ์ฑ์ ์ฌ์ฉํ๊ณ ์์ง ์์ ๋๋ก ๋๋ ์ ์๋ค. ์ข ๋ ๋ํ ์ผํ๊ฒ ๋๋๋ฉด 5๊ฐ์ง ์ํ๋ก ๋๋ ์ ์๋ค.
์์ธํ ๋ด์ฉ์ ๋ค๋ฅธ ๊ธ์์ ์ดํด๋ณด๊ณ ์ ํ๋ค.
Not Running
์ฑ์ด ์คํ๋์ง ์๊ฑฐ๋, ์ข ๋ฃ๋ ์ํ๋ฅผ ์๋ฏธํ๋ค.
Active
Active ์ํ์ธ ์ฑ์ ํ๋์ด๋ค.
Inactive
์ ํ๊ฐ ์ค๊ฑฐ๋ ๋๋ ์๋์ด ์ธ๋ฆฌ๊ฒ ๋๋ฉด ์ฐ๋ฆฌ๊ฐ ์ปจํธ๋กค ํ ์ ์๋ ์ํ๊ฐ ๋๋ค. ๋ค์ ์ฑ์ ์ฌ์ฉํ๊ฒ ๋๋ ์๊ฐ Active๋ก ๋์์ค๊ฒ ๋๋ค.
Active์ Inactive ์ํ๋ฅผ ๋ฌถ์ด์ Foreground๋ผ๊ณ ๋ถ๋ฅธ๋ค.
Background
์ฑ์ด ํ๋ฉด์ ๋ณด์ด์ง ์์ง๋ง ์ฝ๋๋ฅผ ์คํํ๊ณ ์๋ ์ํ๋ฅผ ๋งํ๋ค.
Suspend
์๋์ผ๋ก ์ฑ์ ์ง์ฐ๊ฒ ๋๋ฉด Suspend ์ํ๊ฐ ๋๋ค. ์์คํ ์ด ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด ์ฑ์ ์์ ํ ์ข ๋ฃํ๊ฒ ๋๋๋ฐ ์ด ๋ ์ฑ์ Not Running ์ํ๋ก ์ ์ด๋๊ฒ ๋๋ค.
App Delegate์ Scene Delegate
AppDelegate
SceneDelegate
iOS13
Scene ๊ฐ๋ ์ ๋ฑ์ฅ
iPad OS์ ๋์ ๋ ์๋ก์ด ๋ค์ค ์ฐฝ ์ง์๊ธฐ๋ฅ์ด ์ ์ฉ๋ ๊ฒฐ๊ณผ๋ค. ๊ทธ ๊ฒฐ๊ณผ AppDelegate์ ์์ ์ ๋๊ฐ๋ก ๋ถํ ํ๋ค. AppDelegate๋ ์ ํ๋ฆฌ์ผ์ด์ life Cycle ๋ฐ ์ค์ ์ ๋ด๋นํ๊ณ , SceneDelegate๋ ํ๋ฉด (Scenes)์ ํ์๋๋ ๋ด์ฉ์ ์ฒ๋ฆฌํ๊ณ ์ฑ์ด ํ์๋๋ ๋ฐฉ์์ ๊ด๋ฆฌํ๋ค.
๋์ผํ ์ฑ์ 3๊ฐ ์ด์ ๋์ ๋ค๊ณ ๊ฐ์ ํด๋ณด์. ํ๋๋ Background, ํ๋๋ Foreground, ํ๋๋ Suspend ์ํ๊ฐ ๋ ์ ์๋ค. ๊ทธ๋ผ ์ด๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ ์ ์์๊น. ์ฌ๊ธฐ์ Scene(Session)์ ๊ฐ๋ ์ด ๋ฑ์ฅํ๊ฒ ๋๋ค. iPad์์ ์ฑ์ ๋์ฐ๋ ๊ฒ์ Scene์ ๋์ด๋ค์ ๊ฐ๋ ์ด ๋๋ค.
App Delegate ์คํ ์ดํ์ Scene Delegate์๊ฒ ๊ถํ์ ์์ํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ์ผ์ด 2๊ฐ๋ก ๋๋๋ค. ์๋ก ์ญํ ์ ๋ถ๋ฆฌํ๊ฒ ๋ ๊ฒ์ด๋ค. ์ํ ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ 12.4๋ก os๋ฅผ ์คํํ๋ฉด ๊ธฐ์กด์๋ SceneDelegate ํ์ผ์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ค.
๋คํฌ๋ชจ๋
iOS14
pip ๋ชจ๋๋ ์ฐฝ ๋ชจ๋๋ฅผ ์๋ฏธํ๋ค. ์ ํ๋ธ์์ ์ฐฝ ๋ชจ๋๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ก๋ค.
available attribute keyword (์ฝ๋์ ๋ฒ์ ๋์์ ์ด๋ป๊ฒ ํด์ผ ํ ๊น?)
๋ ๋ง์ ๋ด์ฉ์ TIL - #available, @available ์ฐธ๊ณ ๋ฐ๋.
Not Running์ธ์ง Background์ธ์ง ๊ทธ ์ํ๊ฐ ๊ถ๊ธํ๋ค.
๋คํฌ๋ชจ๋์ ์ปฌ๋ฌ ์ง์
Black Color vs Label Color
System Color(+ ์๋์ ์ผ๋ก ๋ค์ด๋ฐ์ด ๋ค์ด๊ฐ ์์)
์ปค์คํ ์ปฌ๋ฌ
Asset Catalog๋ก ๋คํฌ๋ชจ๋ ์ ์ฉํ๊ธฐ
๋ง์ฝ์ ๋คํฌ๋ชจ๋๋ฅผ ๋์ํ๊ณ ์ถ์ง ์๋ค๋ฉด!
์ค์ ์ฑ ์ฌ๋ก
๋คํฌ ๋ชจ๋ ์ ํ ๋ฐฉ๋ฒ
value ๊ฐ์ ์๋ฌธ์๋ก ์ฐ๋ฉด ๋ฆฌ์ ์ฌ์ ๊ฐ ๋ ์ ์๋ค ใ ใ
Apple Design Resources
https://developer.apple.com/design/resources/
๊ฐ๋ก๋ชจ๋
์ธ๋ก ๋ชจ๋
180๋ ์ ํ, ์ด๊ฒ์ iPad์๋ง ์ ์ฉ(์๋ํ๋ฉด ์์ดํฐ์๋ ๋ ธ์น๊ฐ ์๊ธฐ ๋๋ฌธ)
๊ฐ๋ก๋ชจ๋, ์ผ์ชฝ์ผ๋ก ํ์
๊ฐ๋ก๋ชจ๋, ์ค๋ฅธ์ชฝ์ผ๋ก ํ์
Project, Target
UIWindow
sleep() ๋ฉ์๋๋ฅผ ์ด์ฉํด Launch Screen ๋์ ์๊ฐ ์กฐ์
IBOutlet์ด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ์ด ์ ๋์ง ์์๋
UITextField
UIButton
Button์ IBAction์ ์ฐ๊ฒฐํ ๋๋ sender์ ํ์ ์ Any๊ฐ ์๋ UIButton์ผ๋ก ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค. ์ ์ผ๊น?
Keyboard๊ฐ ์ ์์ ์ผ๋ก ์ฌ๋ผ์ค์ง ์์ ๋
IBOutlet๊ณผ IBAction
ํค๋ณด๋ ๋ด๋ฆฌ๊ธฐ์ Tap Gesture
๊ฐ์ฅ ์๋ก ์ ์ธ ๋ฐฉ๋ฒ
๋ฒํผ์ ๋ฐํ ํฌ๊ธฐ ๋งํผ ์ฑ์ด๋ค. ๋ฒํผ์ ๋๋ ์ ๋ ์ก์ ์ ๋๊ฒ ์ง๋ง ๊ฒน์น๋ ์์ญ์ ๋ํ ๋์์ด ๋์ง ์๋๋ค. ์ฆ ํ ์คํธ ํ๋๋, ๋ค๋ฅธ ๋ฒํผ์ ๋ํ ๋์์ ์ํํ ์ ์๋ค.
์ ์ค์ฒ(tap gesture)์ ์ด์ฉ
The text was updated successfully, but these errors were encountered: