본문 바로가기

iOS43

Ch5. Filtering Operators 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책과 ReactiveX 사이트를 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 이번 게시물에서는 마블 다이어그램과, 마블 다이어그램에 해당하는 메서드 예시를 중점으로 정리하였습니다. 챕터 이름에서 알 수 있듯이, 이번 게시물에서는 원하는 값을 얻기위해 필터링을 하는 Filtering Operator들을 알아보겠습니.. 2023. 2. 24.
RxSwift. Traits가 뭘까? (Single, Maybe, Completable) RxSwift를 공부하던 중에 책에는 없는 내용인 Trait(Signle, Maybe, Completable)라는 게 있다는 것을 알게되었습니다. RxCocoa에도 Traits가 있지만 오늘은 일단 RxSwift의 Traits에 대해서 다뤄보려 합니다. What is Traits? Traits란 UI처리에 특화된 Observable이라고 할 수 있습니다. Traits는 직관적이고 작성하기 쉬운 코드를 작성하는데 도움이 되는 Observable로, 인터페이스 간 Observable이 소통하는 것을 도와주고 raw observable에 비해 문맥상 의미를 전달하거나 특정 용도로 사용하기에 좋습니다. 따라서 필수가 아닌 선택적으로 사용됩니다. Single 1개의 element를 포함하는 Observable S.. 2023. 2. 24.
Ch3. Subjects 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책과 ReactiveX 사이트를 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 이번 게시물에서는 마블 다이어그램과, 마블 다이어그램에 해당하는 코드 예시 및 결과를 중점으로 정리하였습니다. 앞서 작성했던 게시물 Chapter 2에서는 Observable이 무엇인지, 어떻게 생성하는지, 어떻게 subscribe하는지.. 2023. 2. 24.
Ch2. Observable 본 게시물은 Florent Pillet, Junior Bontognali, Marin Todorov, Scott Gardner - RxSwift. Reactive Programming with Swift (2017, Razeware LLC) 책을 기반으로 작성되었습니다. RxSwift를 공부하는 데에 이 책을 읽으면 좋겠다고 생각하였고, 단지 읽기만 하는 것보다 한국어로 직접 정리해놓으면 더 기억하기 좋을 것 같아 게시물을 작성하게 되었습니다. 영어 원서로 된 책을 제가 읽히는대로 의역 및 정리하였기 때문에 잘못된 해석이 있을 수 있습니다. 잘못된 해석은 댓글로 알려주시면 바로 수정하겠습니다 :) What is an observable? Observable은 Rx의 심장이라고 할 수 있습니다. 우리는 앞.. 2023. 2. 24.
[SwiftUI] 양방향 바인딩 (작성중) 이번 게시물에서는 SwiftUI의 양방향 바인딩에 대해 알아보겠습니다. SwiftUI에서 양방향 바인딩이 중요한 이유는 ContentView가 struct로 이루어져 있기 때문입니다. 그럼 예시를 보면서 천천히 살펴볼까요? 텍스트 입력받기 텍스트를 입력받고, 입력받은 텍스트를 보여주는 예시를 구현해볼게요! 위와 같은 코드를 작성하고 나면 아래와 같은 화면을 볼 수 있습니다. 그리고 저 TextField에 텍스트를 입력하면??? TextField 아래에 있는 Text에도 입력한 글자가 나타나게 되죠! 코드를 보면 TextField에서 입력되는 텍스트를 $email을 통해 email 변수에 넣어주게 되고, Text에서는 그 email 변수를 보여주도록 되어 있죠. 그리고 email 변수에는 @State 가 .. 2023. 2. 24.
[SwiftUI] 시작하기 네 저도 이제 SwiftUI를 공부해보려 합니다.. iOS 공부를 시작한지 7개월차가 되었고, 그동안 SwiftUI보다는 기초적인 부분에 신경쓰려고 했었어요. Storyboard를 활용해본다던가, xib를 활용해본다던가, ConstraintsLayout을 사용해서 코드로 뷰를 구성해본다던가, SnapKit을 사용해본다던가... 그리고 이제 SwiftUI를 슬슬 시작해보기로 마음 먹었습니다 :) SwiftUI SwiftUI는 재작년 2019 WWDC에서 발표된 것으로, iOS 13.0 이상부터 사용 가능합니다. 그리고 이 SwiftUI를 사용해서 워치나 위젯을 구현할 수 있게 되었죠! SwiftUI는 선언적 구문을 사용하기 때문에 사용자 인터페이스의 기능을 명시하기만 하면 되어, 간단한 코드로 Swift의.. 2023. 2. 24.
[Apple] userInteractionEnabled 본 게시글은 Apple Developer - userInteractionEnabled 를 해석한 글입니다. userInteractionEnabled "A Boolean value that determines whether user events are ignored and removed from the event queue." userInteractionEnabled는 User Event를 무시할지, 그리고 Event Queue에서 제거할지를 결정하는 Boolean 값입니다. userInteractionEnabled를 NO라고 설정했을 때는 touch, press, keyboard, focus event 가 무시되고, Event Queue에서 제거됩니다. YES라고 설정했을 때는 해당 이벤트들이 정상적으로.. 2023. 2. 24.
UIView의 각 코너마다 서로 다른 radius 적용하기 이전에 view.layer.maskedCorners 를 사용하여 특정 코너에만 radius를 적용해 본 경험은 있었습니다. 하지만 이번에는 각각의 코너에 서로 다른 radius 값을 적용해야 할 일이 생겨서 방법을 찾아보았고, 그 방법을 기록 및 공유해보려 합니다. 그럼 예시로 아래와 같은 뷰를 구현해보겠습니다. 보통 특정 코너에 radius를 적용하기 위해 사용하는 maskedCorners 는 left-top, left-bottom 의 14 px 짜리 코너만 적용하거나, right-top, right-bottom 의 4 px 짜리 코너만 적용하는 등, 특정 코너에 하나의 radius 값만 적용할 수 있었습니다. 하지만 제가 구현해야 하는 뷰는 위에 보이는 뷰처럼 특정 코너에는 14 px 의 radius.. 2022. 4. 19.
[Objective-C] 기본문법 (함수, 변수) 최근 Objective-C를 공부할 일이 생겼습니다. 그래서 기본문법부터 천천히 살펴보려 하는데, 이번에도 블로그에 기록해가며 공부하는게 기억에도 오래 남을 것 같아 게시글을 작성하게 되었습니다. 오늘은 Objective-C에서 아주아주 기본적인 문법들만 간단하게 살펴볼 예정입니다. 함수 선언 Objective-C에서는 .h (헤더파일) 과 .m 파일이 있습니다. 보통 .h 파일에 구현할 메서드와 변수를 선언하고, .m 파일에서 그 내용들을 구현하게 되죠. 그렇기 때문에 함수를 구현하기 위해서는 .h 파일에 어떤 메서드를 구현할건지 선언해주어야 합니다. 함수 구현 - 로 선언된 함수는 인스턴스 메서드, + 로 선언된 함수는 클래스 메서드입니다. 그래서 호출할 때에는 아래처럼 인스턴스 메서드는 self를 .. 2022. 1. 13.
Objective-C 와 Swift 혼용 사용하기 iOS에서는 Objective-C와 Swift를 한 파일에서 혼용하여 사용할 수 있습니다. 따라서 기존 프로젝트가 어떤 언어로 구현되어 있는지는 우리에게 영향을 주지 않습니다. 이번 게시물에서는 Swift에서 Objective-C 코드를 사용하는 방법을, Objective-C에서 Swift 코드를 사용하는 방법을 알아보겠습니다. Swift에서 Objective-C 사용하기 Swift에서 Objective-C를 사용하는 방법은 자동으로 브릿지 파일을 생성하는 방법과 수동으로 생성하는 방법이 있습니다. 자동으로 생성하는 방식은, Swift 파일을 생성할 때 Xcode에서 브릿지파일을 만들거냐고 물어봅니다. 이때 만들어달라고 하면 알아서 만들어주기 때문에 그대로 사용하면 됩니다. 따라서 아래부터는 수동으로 브.. 2022. 1. 13.
[Swift 5.5] Async / Await Swift 개발을 하다보면 Closure나 Completion Handlers를 사용하는 asynchronous(비동기) 프로그래밍을 많이 하게 된다. 이처럼 많은 비동기 작업, 오류 처리, 비동기 호출 간의 제어 흐름이 복잡할 때 문제가 된다. 많은 비동기 작업에는 수많은 tab이 들어간 deeply-nested closures가 필요하게 되고, 콜백은 오류 처리를 매우 어렵고 장황하게 만든다. 비동기 호출 간의 제어 흐름이 복잡할 때는 어떠한 closure가 completion handler에서 사용될 때, capture에 대해 신중하게 생각해야 하는 상황이 발생할 수도 있다. 그래서 나오게 된 것이 async와 await다. async와 await는 Swift 5.5부터 새로운 비동기 프로그래밍 패.. 2021. 12. 20.
Displaying a Bottom Sheet in iOS 15 Using UISheetPresentationController 이번 게시물은 제가 AppCoda라는 메일구독서비스를 통해 매주 알림받고 있는 이슈들 중에서 Displaying a Bottom Sheet in iOS 15 Using UISheetPresentationController라는 게시물을 읽고, 한 번쯤 한글로 정리하면 나중에 도움이 될 것 같아 게시글을 작성하게 되었습니다. 언제나처럼 제가 읽히는대로 번역을 한 것이기 때문에 의역이 많고, 잘못된 언어선택이나 번역이 있을 수 있으니 그런 부분은 댓글로 알려주시면 바로 수정하겠습니다 :) SwiftUI가 릴리즈되면서, 누군가는 UIKit의 시대가 이제 끝난거냐고 묻습니다. 하지만 UIKit의 시대는 아직 끝나지 않았습니다. iOS 15에서 애플이 UIKit와 관련된 새로운 feature를 내놓았기 때문이죠! .. 2021. 7. 11.