본문 바로가기

분류 전체보기

(35)
[UIKit] UIKit 앱실행부터 UIView까지(iOS 13 ⬆) 안녕하세요 주니오스입니다✋ 한동안 프로젝트에 참여하느라 블로그글을 자주못썼습니다.😓 SwiftUI 프로젝트를 진행하던 도중 UIKit 프레임워크를 사용해하는 경우가 생각보다 많았습니다. UIKit공부에 중요성을 느끼게 되어 해당 프레임워크의 앱 실행 플로우에 대한 포스팅을 진행하게 되었습니다. 공식적으로 제공하는 구조는 아래와 같습니다. UIApplication 각각의 앱은 하나의 어플리케이션 객체를 가집니다. 앱을 실행하면 가장먼저 UIApplication인스턴스가 싱글톤 패턴으로 생성됩니다. shared 전역 프로퍼티를 통해서 접근할 수 있습니다. 앱에 발생하는 모든 이벤트는 어플리케이션 인스턴스를 거쳐 적절한 UIWindow에 전달됩니다. iOS 13이상 부터는 AppDelegate를 통해서 Sce..
[SwifUI] IgnoreSafeArea수정자 정확하게 이해하기 안녕하세요 주니오스입니다. ✋✋✋✋ iOS개발을 해보신 분이라면 SafeArea에 대해 한번쯤은 들어보셨을 것이라고 생각합니다. 정확한 개념이 잡히지 않는 것같아 글로 정리해 보려고 합니다. SafeArea란? 최신? iPhone은 상단에는 다이나믹 아일랜드가 하단에는 탭을 닫을 수 있는 바(Bar)가 있는 것을 확인할 수 있습니다. 이러한 요소들이 화면상에 명확하게 표시되는 것을 보장하기위해 SafeAreaInset이라는 개념이 존재합니다. SafeAreaInset은 화면전체 영역과 SafeArea간의 간격을 의미합니다. 그렇습니다. SafeArea란 해당 간극(Insets)을 배재한 공간을 의미합니다. 하지만 주의해야 할 점이 있습니다. 모든 뷰가 같은 Inset을 가지는 것이 아닙니다. 앞서 설명한..
[Xcode] 프로젝트 모듈화 개념 정리(with Tuist) 안녕하세요 주니오스 입니다 🙌 이번글은 프로젝트 모듈화에 대해 다뤄보려고 합니다. 일반적으로 우리가 Xcode를 통해 프로젝트를 생성하게 되면 프로젝트 하나와 타깃하나가 생성되는 것을 확인할 수 있습니다. (XCTest를 포함하는 경우 타깃은 2개입니다.) 그렇게 폴더구조를 나누고 개발을 진행하다보면 프로젝트의 규모가 엄청나게 커지는 것을 확인할 수 있습니다. 이렇게 되면 어떤 폴더에 어떤 것이 있는지 잘 알 수 없게 됩니다. 즉, 유지 보수가 힘들어 집니다. (협업을 하는 경우 효율이 매우 떨어지는 결과를 야기합니다.) 그래서 사실 프로젝트 모듈화는 필수적이라고 필자는 생각합니다. Xcode에서 모듈이란? 글을 읽는 분이 개발자라면 모듈에 대해 지겹도록 들어보셨을 것이라고 생각합니다. Xcode에서 모..
[SwiftUI] View좌표계이해를 통한 addArc사용 안녕하세요! 주니오스 입니다. ✋✋✋ 최근에 저는 개인프로젝트를 진행하고 있습니다. 탭뷰를 사용하여 네비게이팅을 하려고합니다. 하지만 단순하고 각진 기본 탭뷰에 만족을하지 못했던 저는 단조로운 직선에 곡률을 더하고자 하였습니다.😎 하지만 이 과정이 생각보다 순탄하지 않았던 터라 포스팅을 통해 정리하기 위해 글을 적습니다. 😅 우선 최종적으로 완성한 저의 탭뷰를 먼저 보고 출발해봅시다~! 🤗 탭뷰의 바가 살짝휘어져 있는 것을 확인할 수 있습니다. 그리고 특정 탭 아이템을 누를 때 휘어져있는 탭바 위로 움직이는 막대가 있습니다. 🤗 위 뷰에서 사용된 곡선을 만들기위해 저는 Shape프로토콜을 사용하였습니다. Path인스턴스는 addArc라는 매서드를 가지는데 해당 매서드를 사용하여 구현하였습니다. Path...
[Swift] Combine 4편: Combine을 사용한 비동기 코드처리 Hello guys it's junios again ✋✋✋ Today I want to write this post with English 😎 Last time, I introduced Subscriber Protocol and how to use it with pub and Demand mechanism. This time we gonna find out how can we use Asychronous work with Combine. Before start, there are typical ways to develope this work. 1. Handing completion handler to some worker and expect it to be called when work wil be fi..
[Swift] Combine 3편: subscriber동작방식 이해하기 안녕하세요✋ 주디오스 입니다. 저번 편에서 publisher(이하 pub)에 대해 다루었습니다. 이번에는 subscriber(이하 sub)에 대해 글을 작성해 보도록 하겠습니다. Subscriber 프로토콜 Subsriber프로토콜을 사용하여 앞선 2편에서 다루었던 sink, assign등을 사용하지 않고도 sub를 만들 수 있습니다. 해당 프로토콜은 아래코드 구현된 매서드와 연관타입을 요구합니다. class MySub: Subscriber { typealias Input = Date typealias Failure = Never //#1 func receive(subscription: Subscription) { ... } //#2 func receive(_ input: Date) -> Subscrib..
[Swift] Combine 2편: publisher이해하고 사용하기 with Subject 안녕하세요✋ 주니오스입니다. 오늘은 Combine 2편입니다. Combin의 두 기둥중 하나인 publisher(이하 pub)를 만드는 프로토콜에대해 자세하게 알아봅시다. Publisher Protocol 먼저 Apple doc에 적힌 설명을 읽어봅시다. Declares that a type can transmit a sequence of values over time. 앞의 편에서 언급했듯이 sequence of values즉 일련의 값들을 전송하는 타입을 선언한다. Publisher프로토콜을 채택하는 타입은 receive(subscriber:) 메서드를 사용하여 sub를 등록할 수 있습니다. 이때 pub, sub는 서로 Input, Output, Failure연관타입이 일치해야 합니다. 더 깊게 들어..
[Swift] Combine 1편: Combine, publisher 그리고 subscriber 안녕하세요! 주니오스입니다.✋ 오늘은 Combine프레임워에 대해 Apple공식문서를 읽고 제가 이해한 내용을 이글에 정리해 보려고합니다. Combine프레임워크란? 먼저 Combine프레임워크란 무엇인지에 대해 살펴보겠습니다. 공식문서의 내용을 해석하자면 다음과 같습니다. 실행시간에 변경되는 일련의 값들을 publisher(이하 pub)를 통해 subscriber(이하 sub)들에 전달하는 API이다. 즉, 변경되는 값 C에대해 A라는 pub이 B, D, E..같은 sub들에게 해당 변경사항을 전달하는 것이라고 해석할 수 있습니다. 여기서 pub이 sub들에게 전달하는 변경사항은 공식문서에는 element라고 적혀있으니 인지하기 바랍니다. Combine이거 왜쓰는데? 이쯤대면 이 프레임워크를 왜 사용하..