View의 Drawing Cycle
·
iOS/💻 iOS Study
출시 프로젝트를 하면서 compositional layout을 사용하며 만난 오류를 해결하며 알게 된 내용을 정리해보고자 한다! Issue 셀에 들어갈 데이터에 맞게 동적으로 높이를 지정해야 했는데, 레이아웃 구성 시 아무리 estimated를 지정해줘도 높이가 처음부터 알맞게 들어가지 않았다. 여러 방법을 사용했지만 오른쪽 하단 날짜 레이블의 높이가 처음엔 맞지 않았고, 다른 날짜를 탭 후 다시 돌아오면 높이가 알맞게 들어오는 것을 알 수 있다. 해결! layoutIfNeeded() 를 호출하여 문제를 해결하였다. 추정치는 말 그대로 추정하여 높이를 설정하는 것이기 때문에 처음에 정확하게 들어갈 수 없었고, 셀에 데이터가 삽입 된 이후에 레이아웃 업데이트 요청을 해야했던 것이다.. View의 Drawi..
[iOS/Swift] MapKit - 위치 권한 설정을 구현해보자!
·
iOS/💻 iOS Study
위치 권한 진행 방법을 결정 하려면 권한 부여 상태와 정확도 값을 모두 확인해야 한다. 위치서비스 o 권한 요청 권한 허용 사용자 정보 접근 가능 추후 거부 (설정 → 옵션 끄기) ios 시스템 설정 유도 권한 거부 ios 시스템 설정 유도 x 권한 없음 alert → ios 시스템 설정 유도 CoreLocation import import CoreLocation 위치 매니저 인스턴스 생성 private let locationManager = CLLocationManager() delegate 연결 locationManager.delegate = self 프로토콜 연결해주기 extension MainMapViewController: CLLocationManagerDelegate { // 사용자의 위치를 ..
UserDefaults와 Sandbox System
·
iOS/💻 iOS Study
💡 UserDefaults 앱을 실행하는 동안에 키-값 쌍으로 데이터를 저장하는 기본 데이터베이스 인터페이스이다. 애플에서 기본으로 제공하는 저장소로 딕셔너리와 비슷한 구조를 가지고 있다. 런타임 시점에 기본 데이터베이스가 생성되고 .plist 파일에 저장이 된다. plist 파일은 Sandbox 내에 저장되기 때문에 앱을 꺼도 데이터가 유지되고, 앱을 삭제한 경우에만 데이터가 제거가 된다. UserDefaults를 사용할 때는 대용량 데이터나 사용자 정보와 같은 데이터보다는 자동로그인 여부, 알림 설정 여부, 인앱 결제 여부, 간단한 사용자 기본 설정 등과 같은 단일 데이터를 저장한다. 💡 App Sandbox ✅ Sandbox란? App Sandbox는 보호된 영역 안에서 프로그램을 작동시키는 보안 ..
iOS 13 이후의 앱의 라이프 사이클 & available
·
iOS/💻 iOS Study
iOS 13.0 버전 ios 13.0 버전 업데이트가 되면서 iPad OS가 등장하게 되었다. 아이패드에서는 두 개의 앱을 동시에 실행할 수 있게 되면서 앱의 생명주기 관리 방식에 변화가 생겼다. 앱의 생명주기(Life Cycle) 생명주기란? 앱의 실행부터 종료, 백그라운드 상태까지 앱의 상태가 전환되는 과정을 말한다. Not Running 앱이 시작되기 전 상태 (아직 켜지 않음) ForeGround Active 앱이 화면에서 실행 중인 상태 하나의 앱만 Active상태로 유지할 수 있음(아직 아이폰에서 두가지 앱을 동시에 실행할 수 없으니까!) Inactive 앱이 화면에서 실행 중이나 어떤 신호도 받지 않는 상태 (비활성화 상태) 앱 사용중 전화오거나 알람 울릴 때.. BackGround 앱이 화..