네이버 지도를 화면에 추가하는 방법은 크게 2가지 나뉨. 1. NMFMapView를 이용 2. NMFNaverMapView를 이용 NMFMapView와 NMFNaverMapView의 차이 및 기능 사용 공식 문서에 나와 있듯이 NMFMapView는 지도만 제공하는 객체이고, NMFNaverMapView는 지도와 지도와 관련된 UI 및 기능를 제공한다. 즉 NMFNaverMapView가 NMFMapView를 가지고 있다는 것. 따라어 NMFNaverMapView에서 카메라 이동, 줌 레벨 같은 지도 자체를 다루는 기능을 사용하려면, NMFNaverMapView에 있는 NMFMapView에 접근하여 사용해야 한다. lazy var mapView: NMFNaverMapView = { let mapView = ..
구글로그인에서 사용자에게 권환을 허용받으려고 Alert를 보여주려고 할 때 나온 오류 Alert가 보여지자 마자 바로 사라진다. 원인: viewDidLoad가 호출될 때 Alert가 보여지도록 코드를 짜놓았다. 즉 화면에 아직 View가 추가 되지 않은 상태에서 Alert를 보여주려 하니 생긴 오류. 해결책: 화면에 View가 추가되면 호출되는 메소드인 viewDidAppear에서 해당 코드가 실행 되도록 한다.
UICollectionViewLayout 콜렉션 뷰의 레이아웃 정의를 위한 추상 클래스. 직접 사용하기 위한것이 아닌 하위 클래스를 사용하기 위한 것 UICollectionViewFlowLayout UICollectionViewLayout을 상속받은 라인 기반 레이아웃 시스템 UICollectionViewFlowLayout 기본지식 CollectionView의 스크롤 방향에 따라 셀들을 스크롤 방향의 수직이 되도록 배치. 셀들을 배치 할 때 더이상 배치할 공간이 없으면 다음 줄로 넘어가서 배치. 이렇게 흐르듯이 셀들을 배치해 flowLayout이라함. Line Spacing : 줄들간의 간격 Inter-Item Spacing: 항목간의 간격 아래 사진은 레이아웃이 Vertical일때. Horizontal..
layoutMargins 뷰의 경계선과 컨텐츠 사이의 공간. 웹에서의 padding과 같은 역할. UIEdgeInsets 타입. 스토리보드에서 Editor -> Canvas -> Layout Rectangle을 통해 확인 가능. Constrain to margins 오토레이아웃을 margin에 맞출것인지, superView의 경계선에 맞출것인지를 체크하는 옵션 subView를 추가하고 constraints를 파란뷰의 constraints를 상하좌우 0,0,0,0으로 주면 superView인 붉은색 뷰의 margins를 기준으로 레이아웃이 잡힌것을 확인 constrain to margins를 끈채로 constraints를 상하좌우 0,0,0,0으로 주면 View의 경계선을 기준으로 레이아웃이 적용 UIEd..
각 화면마다 addSubView를 통해 로딩 뷰 화면을 일일히 붙여주는것은 너무 귀찮아서, 어떤식으로 하면 함수 하나를 호출하는 것만으로 로딩뷰를 띄울수 있을까 고민했습니다. 현재 생각나는 방법은 protocol의 extension을 이용해 현재 화면을 인자로 전달하고, addSubView로 화면을 추가하는 방법과 최상위뷰에 addSubView를 하여 화면을 추가하는 방법을 생각했습니다. 참고로 여기서 말하는 최상위 뷰는 아래의 view hierarchy에서 맨 앞에 위치한 뷰가 아닌, 가장 뒷쪽에 위치한 View를 말합니다. 왜 뒷쪽에 있는 view를 최상위뷰라고 하냐면 뷰를 추가하면 아래와 같이 최상위 뷰에서 뷰를 추가를 하면 아래 사진처럼 탑다운 형식이 되기에 가장 뒤에있는 뷰를 최상위 뷰라고 하는..