leading / leadingMargin
constraints to margin 체크박스 체크 유무 차이
위치 서비스 활성화 → 사용자 권한 확인 → 권한 결정 안되어 있다면 얼럿 → 바뀐 권한 체크 → 다시 권한 확인 → 허용 authorizedWhenInUse → didUpdateLocation
viewDidLoad에서 권한을 체크하는 함수를 호출하지 않아도 권한 변경 함수가 호출이 된다.
주석처리 하지 않는 것이 좋다. 버그 이슈
🐞 버그
navigationController를 달고 화면 전환을 하면 권한 변경 메서드가 호출되지 않는다.
viewdidload가 기본적으로 호출하는 것은 아니다. nav나 tab 등을 달고 화면 전환을 해야하는 경우라면 권한 체크 함수를 명시적으로 viewDidLoad에서 호출하자
didUpdataLoactions
사용자의 위치가 계속 변경되기 때문에 한 번만 실행 되는 것이 아님
위치를 출력하면 아이폰에서 위치 업데이트가 필요한 시점에 알아서 메서드 호출이 된다.
백그라운드로 위치 정보를 계속해서 받아야 할 때 사용할 수 있다.
💡 Enumeration
✅ Unfrozen Enumeration
멤버가 추가될 가능성이 있는 열거형을 의미한다. 라이브러리 또는 프레임워크에서 선언된 열거형의 멤버들을 모두 case로 처리하더라도 @unknown default 가 필요하다.
✅ @frozen
Swift Attribute 종류 중 하나
@frozen → 더이상 열거형에 절대 추가 될 케이스가 없다고 확신
컴파일 시점에 더이상 추가될 요소가 없다는 것을 알린다.
default에 대한 대응을 할 필요 없다 → 컴파일 속도가 더 빨라짐, 효율!
✅ coordinate
위도 경도 값 가져오기
💡Map View 띄우기
import MapKit
권한을 허용한다고 해서 지도에 사용자의 위치가 나타나는 것은 아님
직접 구현해야 함
✅ 지도에 원하는 위치 보여주기
✅ 지도에 어노테이션 표시하기
애플에서 기본으로 제공하는 핀
어노테이션 지우는 기능도 존재!
→ 기기 기반 위치
✅ 권한 거부 시 얼럿 띄우고 설정 화면으로 이동하기
🚨 위치 관련 코드들이 모두 메인 스레드가 아닌 global에서 작동하고 있다.
권한 체크 부분에서 global로 설정한 후 메인에서 작동하도록 하지 않았기 때문
메인 스레드로 작업 돌려주기
핀 여러개 꽂고 필터링 하기
버튼 클릭 시 카페 어노테이션만 보여주기
필터링 시 removeAnnotations로 등록되어 있는 annotation을 모두 지워준 후 보여줄 annotation을 등록하기
현재 위치 가져오기, 거부 시 설정 페이지 이동
'iOS > 🌱 SeSAC' 카테고리의 다른 글
23.08.25 금 (0) | 2023.08.31 |
---|---|
23.08.24 목 (0) | 2023.08.31 |
23.08.22 화 (0) | 2023.08.31 |
23.08.21 월 (1) | 2023.08.27 |
23.08.18 금 (0) | 2023.08.27 |