Alamofire는 URLSession을 쉽게 사용하게 해 주고 statusCode에 따른 응답 유효성 검사, 응답값 디코딩 등등 여러 가지 편의 기능들을 여럿 지원해 준다. 대표적인 기능으로는 요청을 보낼때마다 공통적인 부분 혹은 로직을 분리해서 재사용할 수 있게 해주는 Interceptor, 요청을 보낼 때 어떻게 작동하고 있는지 Console의 출력을 통해 보여주는 EventMonitor 기능등이 있다. 이러한 기능들은 쉽게 사용할 수 있도록 기본적인 구현이 제공된다. Alamofire에서 기본적으로 구현된것만으로 많은 오픈 API를 대응할 수 있다. 구글링을 통해 Alamofire를 사용하는 코드를 보면 대부분이 이 코드 혹은 이 코드에서 크게 벗어나지 않을 것이다. AF.request("http..
URLSession으로 http프로토콜을 이용해 POST, PUT 통신을 할 때 기본적으로 Reqeust의 헤더에 Content-Type에 application/json을 붙여서 사용했는데, 이번에는 http프로토콜을 이용해 multipart/form으로 이미지를 전송해 보았다. multipart/form 방식은 기존 application/json과 다르게 body를 json으로 보내는 것이 아닌 보내는 데이터를 여러 개로 쪼개서 보내는 방식이다. Multipart/form Header func settingHeader(identifier: String, request: URLRequest) -> URLRequest { var copyReq = request let contentType = "multi..
권한을 요구하는 작업을 수행할 때, 사용자에게 권한을 요청하는 알람을 뛰운다. 또, 사용자가 권한을 거절해 버리면, 설정으로 가서 권한을 부여하도록 Alert 창을 띄운다. 또한 HIG에서는 권한 요청이 필요한 타이밍에 권한을 요청하라고 하고 있다. 즉 시작하자마자 필요한 권한을 모조리 요구하지 말라는 말. 따라서 여러 화면마다 권한 요청을 해야한다면 많은 중복코드가 생길 것이다. 그래서 protocol을 이용하여 권한 요청/각 권한에 따른 설정 이동 Alert를 표시하는 기능을 채택하면 사용할 수 있게 구현해 보았다. Alert를 화면에 띄우는 작업을 protocol의 extension을 이용해 구현했다. protocol Alertable {} extension Alertable where Self: ..
https://sesac.seoul.kr/course/active/detail.do 꿈꾸는 개발자 데뷔코스, 새싹 ‘새싹’은 싹을 틔우기 위해 더 높은 곳을 향해 도전하고 한 단계 성장하여 기업과의 연결, 새로움을 추구하는 인재들의 공간입니다. sesac.seoul.kr 새싹은 사실 2년 전에 한번 지원했었지만 이때는 백엔드 과정에 지원했다가 면접에서 떨어졌다가 이번에 다시 iOS 과정으로 지원했고 합격했습니다. iOS 개발을 시작한 지는 꽤 되었지만, 독학을 하다 보니 잘 몰라도 그냥 넘어가거나 문제 하나를 해결하는데 시간이 많이 걸려서 여러 부트캠프에 지원했고 마지막으로 남은 새싹에 합격했습니다. 저에 관해 간단히 말씀드리면 올해 졸업 어느 정도의 iOS 개발 경험 있음 전공생 정처기 있음 이 정도입..
프로젝트를 진행하던 도중, 아래와 같은 화면을 만들어야 했다. UILabel과 언더라인 뷰를 하나의 스택뷰로 만들어서 UILabel안에 입력된 크기에 따라 width가 변하는 하나의 스택뷰를 만들기로 결정. 글자크기는 80pt로 주고 스택뷰로 묶어서 만든 결과 이런 결과가 나왔다. 상하 여백이 넓게 존재해, 디자인한 UI와 맞지 않는다. 처음에는 이를 해결하기 위해 sizeToFit()함수를 사용했지만 여전히 똑같이 나온다. 글자가 UILabel의 중심에 있는것으로 보아, 이를 설정할 수 있는 변수가 존재한다고 생각하고, 공식 문서를 뒤져봤지만 존재하지 않았다. 몇 시간의 삽질 끝에 원인을 찾아냈다. 이런 문제가 발생한 이유 원인은 UILabel 자체가 아닌 font자체에 있다. 영어 노트를 생각해 보면..
iOS에서 탭바는 하단에 고정되어 있다. 상단 부분에 탭바를 만들고 싶다면, 직접 구현해야 한다. 라이브러리를 써도 되지만, 직접 구현하는 편이 성능상에도 좋을것 같고, 예상치 못한 버그를 수정하는데도 좋을것 같아서 직접 구현해보았다. UITabBarController의 공식문서에 나와있는 탭바의 view 계층 및 구현을 참고하여 구현했다. 상단 메뉴바 구현 상단 메뉴바는 화면을 전환하는 역할을 담당한다. 상단 탭바의 경우 버튼 스택뷰를 이용하거나, 콜렉션 뷰를 이용하여 탭바 안에 들어가는 ViewController의 개수에 따라 일정한 크기를 유지하도록 조절 할 수 있다. 나는 콜렉션 뷰를 활용했다. 메뉴바는 UIView에 콜렉션뷰를 넣고, 콜렉션 뷰의 하단에, 현재 위치를 표시해주는 하단바를 콜렉션 ..