iOS/iOS SeSAC 2기 TIL

7.6 [수업복습] 생명주기, 다크모드, 키보드

Developer-Michelle 2022. 7. 6. 12:51

<생명주기>

아이폰- 앱 사용할 때, 사용하지 않을 때로 분류됨

 

not running (앱이 시작되기 전 상태)

 

active (앱이 화면에서 실행중인 상태) - 아이폰에서 앱 하나만 띄우니까 active인 상태인 앱은 하나.

inactive (앱이 화면에서 실행중이나 어떤 신호도 받지 않는 상태)

background(앱이 화면에 보이지 않지만 코드를 실행하고 있는 상태)  (앱을 여러개 실행했을 때 뒤에 깔리는거)  - active 상태가 아님. 제약이 있다.

 

suspend(앱이 곧 종료될 상태)

 

여기에서 active, inactive 를 묶어서 foreground라고 함

 

---->여기까지 iOS12 (Appdelegate)

 

iOS13으로 가면서 달라지기 시작 (iPad 등장) (Scenedelegate 가 등장)

아이패드에서는 화면 분할이 되기 때문에 active한 앱이 2개 이상이되는 상황이 생김. 3개도 띄울 수 있고, 같은 앱을 2개 띄울 수 있음

active 상태인 앱은 하나 라는 규칙이 깨짐

 

그래서 scene 개념이 등장

 

앱 델리게이트 실행되고 씬 델리게이트가 실행됨

 

앱 델리게이트 - 실행 , 종료만 담당

씬 델리게이트 - 하나만 띄우더라도 씬 델리게이트에서 담당

여러개의 앱을 띄울 때 foreground, background로 보내는거

iPad 에서 씬을 띄운다고 표현

 

 

----------------------------------

코드를 외우지 않아도 되는 방법

오른쪽 마우스 클릭 : create code snippet 으로 자주 쓰는 코드 등록

불러올 때 +버튼으로 누르고 더블클릭해서 가져올 수 있음

----------------------------------

 

 

다크모드 실행방법 (시뮬레이터에서)

설정->개발자->Dark appearance

내가 직접 커스텀한 컬러는 다크모드에서 반전 불가

 

다크모드 대응

Assets에서 any, light, dark 선택하면 -> any : iOS 13 이하버전 / light, dark : iOS13 이상 버전

 

다크모드 대응하고 싶지 않으면 : (UI적 요소가 그닥 필요하지 않은 앱의 경우)

info.plist에서 Appearance -> Light (L대문자 주의)로 적기

 

----------------------------------

General에서 portrait (세로모드) 설정한다고 해도 시뮬레이터에 띄우면 적용이 안되는 경우

Build settings 에 들어가서 Info.plist values -> supported interface orientation(iphone) -> Portrait 만 남기기 (나머지 landscape left, right 지우기)

 

->정리:  General에서 적용하더라도 적용이 안되면 Build Settings 도 바꿔본다

 

 

참고))

애플 워치 등 다른 거 추가해서 기능 추가~~ Targets 

프로젝트 하나에 target 이 여러개 있을 수 있다

ex) 광고 제거, 위젯, 등등

 

----------------------------------

 

낮은 버전 (iOS 13 이하) 지원하고 싶으면 AppDelegate var window: UIWindow? 쓴다

버전에 상관 없이 UIWindow를 다 쓰는데,

iOS 13 이하에서는 AppDelegate에 var window: UIWindow?  를 써야 대응됨.

iOS13 이후로 scenedelegate로 var window: UIWindow?  이관됨 (SceneDelegate에 var window: UIWindow?가 기본적으로 쓰여져 있음)

 

----------------------------------

 

런치스크린 Launchscreen 지연시키기 (sleep)

Appdelegate에서 설정함

--------------------------------

 

UI요소 복사 :cmd + d

UI요소에 대고 option누르면 가로 세로 높이 주변 수치 뜬다

 

클린 빌드

Product -> Clean Build Folder

 

키보드 안 올라오는 경우

I/O -> keyboard -> connect hardware keyboard (cmd + k)

--------------------------------

 

.highlighted =>  눌렀을 때 "빨리보내"로 바뀜

 

text field 관련 키보드 내리기

키보드를 "언제" 내릴 것인가?

1. 밑바탕을 클릭했을 때

Tap Gesture Recognizer 를 밑바탕에 추가

 

 

키보드 올라오는건 textfield를 클릭하는 순간.

'iOS > iOS SeSAC 2기 TIL' 카테고리의 다른 글

iOS UISwitch에 대한 UI 속성  (0) 2022.07.06
iOS UITextField 에 대한 UI 속성 + 추가 액션  (0) 2022.07.06
Swift file vs. CocoaTouch Class file  (0) 2022.07.06
7.5 수업 복습 - UI 관련  (0) 2022.07.05
iOS UIButton 관련  (0) 2022.07.04