iOS에서 탭바는 하단에 고정되어 있다. 상단 부분에 탭바를 만들고 싶다면, 직접 구현해야 한다. 라이브러리를 써도 되지만, 직접 구현하는 편이 성능상에도 좋을것 같고, 예상치 못한 버그를 수정하는데도 좋을것 같아서 직접 구현해보았다. UITabBarController의 공식문서에 나와있는 탭바의 view 계층 및 구현을 참고하여 구현했다. 상단 메뉴바 구현 상단 메뉴바는 화면을 전환하는 역할을 담당한다. 상단 탭바의 경우 버튼 스택뷰를 이용하거나, 콜렉션 뷰를 이용하여 탭바 안에 들어가는 ViewController의 개수에 따라 일정한 크기를 유지하도록 조절 할 수 있다. 나는 콜렉션 뷰를 활용했다. 메뉴바는 UIView에 콜렉션뷰를 넣고, 콜렉션 뷰의 하단에, 현재 위치를 표시해주는 하단바를 콜렉션 ..
이거때문에 3시간은 날린듯... UIButton에서 이미지를 조절하는 방법은 과거에는 contentInset같이 Inset을 조절하여 이미지 사이즈를 조절하는 방식이 있었지만, 지금은 업데이트 되면서 빠지게 되었다. 그래서 다른 방식으로 이미지를 조절해야 한다. 그 방법은 이미지 사이즈 자체를 조절하는 것. UIButton는 이미지의 크기대로 버튼 내부에 그릴 뿐. 따라서 image를 내가 원하는 사이즈로 resizing하면 된다. 이미지 리사이징 코드 import UIKit extension UIImage { func resizeImageTo(size: CGSize) -> UIImage? { UIGraphicsBeginImageContextWithOptions(size, false, 0.0) self...
네이버 지도를 화면에 추가하는 방법은 크게 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..