분류 전체보기

    [iOS] - UICollectionView Compositional Layout

    앱스토어 앱. CompositionalLayout을 사용하지 않는다면 테이블뷰 내부의 셀 내부의 컬렉션뷰 내부의 테이블뷰... 이런 복잡한 레이아웃을 보완하기위해 Compositional Layout의 등장. 전체 하나의 CollectionView로 섹션별 다양한 레이아웃을 적용 가능 구성 하나의 Layout 내부의 여러 Section이 포함되며 Section은 여러 Group을 포함한다. Group은 Item을 갖고있다. 이들의 크기를 지정해주면 된다. CollectionView의 item 사이즈를 정하는 방법(NSCollectionLayoutDimension) .absolute - 고정 크기 .estimated - 런타임에 크기가 정해지는경우(예상크기) .fractional - 비율(컨테이너에 대한 ..

    [iOS] Alamofire 네트워크 레이어 설계1. 에러처리 (feat. Rx)

    https://ios-development.tistory.com/731 [iOS - swift] 1. Alamofire 사용 방법 - Network Layer 구현 (Moya 프레임워크처럼 사용하는 방법) 1. Alamofire 사용 방법 - Network Layer 구현 (Moya 프레임워크처럼 사용하는 방법) 2. Alamofire 사용 방법 - 토큰 갱신 방법1 (Interceptor, adapt, retry) 3. Alamofire 사용 방법 - 토큰 갱신 방법2 (AuthenticationCredential, ios-development.tistory.com 해당 게시글을 토대로 구현해본 네트워크 레이어를 기록해봅니다. 부족한 점이 있다면 알려주시면 감사합니다. 1. 에러 처리 * HTTP통신은..

    [iOS] - IntrinsicContentSize, InvalidateIntrinsicContentSize()

    IntrincContentSize 본질적인 컨텐츠 크기 UILabel, UIButton을 autoLayout으로 구현할 때 Width, Height를 지정해주지 않아도 에러가 발생하지 않는 이유는 IntrinsicContentSize프로퍼티에서 컨텐츠의 크기를 계산해주기 때문입니다. UILabel, UIButton, UIProgressView 모두 루트뷰의 leading, top spacing만을 주었습니다. 모두 위치만 지정해주고 크기를 지정하지 않았습니다. UILabel, UIButton은 모두 IntrinsicContentSize프로퍼티가가 Width, Height를 계산해주어서 크기를 정할 수 있지만 UIProgressView는 IntrinsicContentSize로 크기를 알 수 없어서 에러가 ..

    [iOS] - ContentSize(셀 전체) 만큼 커지는 UITableView/UICollectionView

    ContentSize(셀 전체) 만큼 커지는 UITableView/UICollectionView UIButton, UILabel 처럼 contentSize만큼 intrinsicContentSize가 커지도록 적용한 커스텀 테이블뷰/ 컬렉션뷰 입니다. 리스트 전체를 한 번에 보여줘야하는 컴포넌트를 만들 때 유용하게 사용할 수 있습니다. 물론 이렇게 사용하면 재사용 하는 부분이 없기 때문에 UIStackView만을 이용해서 만들 수 있지만 변경된 새로운 값을 보여줘야 할 때 StackView는 변경점을 찾아 수정하고 전체를 업데이트 해줘야 하지만 TableView/StackView는 변경된 값을 바인딩만 시켜주면 끝이라 더 쉽고 효율적입니다, open class IntrinsicContentHeightTab..

    [iOS Error] - [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID .feat: RxSwift

    [RTIInputSystemClient remoteTextInputSessionWithID:performInputOperation:] perform input operation requires a valid sessionID UITableViewCell에 위치한 TextField를 선택하면 firstResponder가 되자 마자 바로 위의 에러가 발생하며 resign이 되는 오류였습니다. 구조는 다음과 같습니다 TableView -> Cell -> StackView -> TextField(문제가 되는 부분) UITableView는 내부 컨텐츠 크기만큼 height이 늘어나도록 만들어둔 커스텀 클래스였고 그렇기 때문에 재사용 이슈가 발생하지 않지 않을까 했지만 새로운 값이 바인딩 될 때 재사용이 발생합니다..

    [iOS] - 클릭 이벤트가 발생하지 않는 이유

    사이드 프로젝트를 진행하다 제 하루를 날려먹은 원인을 기록하고자 합니다.. 커스텀 바텀 시트를 구현중이었습니다. 아래의 커스텀 바텀시트를 구현중이었고 닫기의 tap Event를 뷰모델에 바인딩을 했는데 아무리 클릭을 해도 tap 이벤트가 발생하지 않았습니다. 해당 뷰는 이런구조입니다. 뷰컨 - 1커스텀뷰(반투명 배경의 뷰) - 2커스텀뷰(바텀시트뷰) 애니메이션까지 모두 구현했으나 아무리 탭 이벤트가 발생하지않습니다. 그래서 1커스텀뷰에 touchesBegin을 찍어보니 1커스텀뷰까진 터치이벤트가 잘 전달됩니다. 그래서 2커스텀뷰의 레이아웃을 확인해보니 contentView는 내부의 컨텐츠를 스택뷰로 구현해놓은 UIStackView입니다. 2커스텀뷰의 top이 bottom과 같았을테고 event전달이 하위..

    [Agile] - 2. 칸반(Kanban)

    사이드 프로젝트를 시작하며 Jira를 사용하게 되어 칸반에 대해 공부해봅니다. 애자일을 먼저 학습하면 도움이 됩니다. 칸반(Kanban) 칸반의 가장 큰 특징은 다음과 같다고 생각합니다. 칸반은 연속적인 흐름 방식이다. - 회고를 통해서.. 칸반은 팀이 수행해야하는 업무와 팀원이 맡을 수 있는 작업량 간의 균형을 맞추는 수단입니다. - WIP를 통해서.. 모든 칸반팀의 업무는 업무를 시각화하고 팀 간 워크플로우를 최적화 하는데 사용되는 도구인 칸반보드를 중심으로 이루어집니다. 칸반보드를 이해하면 칸반을 이해할 수 있습니다. 우선 칸반이 필요한 이유를 알아봅시다. 칸반이 왜 필요한가? 팀이 새로운 프로젝트를 시작한다면 누가 어떤 업무를 수행하고 있는지, 업무가 어떤 단계에 있는지와 같은 스케쥴을 쉽게 파악..

    [Agile] - 1. 애자일(agile)이란 무엇인가.

    Agile agile = 기민한, 날렵함 애자일이란 소프트웨어 개발 방식의 하나로, 작업 계획을 짧은 단위로 세우고 제품을 만들고 고쳐나가는 사이클을 반복함으로써 고객의 요구 변화에 유연하고도 신속하게 대응하는 개발 방법론입니다. 애자일은 기민하다라는 뜻으로 , 둘 사이의 균형을 잡자는 의도로 나온 개발방법론입니다. 폭포수모델 전통적인 개발방법론중 에는 이 있습니다. 이런 전통적인 개발방법론들은 대략 다음과 같은 틀을 가집니다. 기획 > 디자인 > 개발 > 테스트 > 배포 > 유지보수 많이 겪어봤던 프로세스입니다..! 이 프로세스는 마감기한을 딱. 정해놓고 그 마감기한 안에 프로젝트를 끝내기 위해 모든 팀원이 자신이 맡은 일을 끝낸 후 다음차례로 넘깁니다. 아무 문제 없이 끝난다면 좋겠지만 현실은 그렇지..

    Framework, Library, API

    API(Application Programming Interface) API는 응용프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스입니다. 쉽게 말해 프로그램 사이를 연결해주는 다리역할을 합니다. 예를 들어 위치공유 프로그램을 개발하고싶은데, 직접 지도서비스를 개발하기엔 시간과 비용이 많이들어 타사의 서비스를 사용하겠다. 라고 한 경우 Google의 지도서비스를 생각할 수 있습니다. Google의 지도 서비스를 사용하려면 API를 호출해야합니다. https://map.google.com/37.2318&26.138 이런식으로 호출을 하게되면 Google지도서비스는 내 프로그램에게 지도와 관련된 정보를 전달해주게 될 겁니다. 여기서 https://map.google....

    [iOS] Push Notification(3). FCM

    Firebase를 이용해 원격 푸시 알림을 사용해봅니다. Push Notification(1), Push Notification(2)에 PushNotification과 APNs의 내용들을 자세히 정리했기 때문에 추가적인 설명은 넘어가겠습니다. 1. APNs 인증 키를 발급받아야합니다. Apple Developer > 인증서, 식별자 및 프로파일 > 키 키는 계정당 2개가 최대입니다. 키 이름은 원하는대로 생성하고, Apple Push Notifications 를 체크합니다. Continue를 클릭합니다. Register를 선택하고 등록을 완료하면 "Download Your Key" 페이지가 등장하는데, 여기서 우측에 DownLoad버튼을 클릭하면 ".p8" 확장자의 파일이 다운로드됩니다. 여기서 p8..