Swift

    [Swift] FCM 주제 구독 및 백그라운드 처리

    오랜만에 글을 남기고 싶은 부분이 있어서 글을 남긴다.. FCM 의 종류로는 3가지로 단일기기, 기기그룹, 주제구독 이 있는데 글쓴이는 주제구독을 사용했다.  특징을 잘 나타낸 블로그가 있는데 안드로이드 기준 글이라 내용만 살펴보면 될 것 같다. (감사합니다~)https://donghun.dev/Firebase-Cloud-Messaging [Firebase] FCM에 대해서 알아보자. 🔔Note : 이 글은 지극히 주관적인 생각을 토대로 작성된 글입니다. 혹시나 잘못된 부분이 있다면 메일 또는 코멘트를 통해 알려주시면 감사하겠습니다. 😄 제 메일은 About 탭에서 확인하실 수 있습donghun.dev  서버에서 보내는 메세지 payload의 규칙은 다음 글을 보며 파악해보자.https://sweet..

    [Swift] 의존성 주입, DIContainer(IOC Container)만들기

    Clean Architecture를 사용하다보면 의존성 주입 중 의존성 역전에 의해 인스턴스 생성에 필요한 파라미터가 끊임없이 늘어남을 경험했을 것이다.. 그러한 불편함을 해결해줄 방법으로써 DIContainer를 AppDelegate에 두어 앱 첫실행 때 모든 의존성 주입이 필요한 인스턴스를 초기화시켜놓고 싱글톤으로 사용하는 법이다. 의존성 주입에 관한 글 https://ios-daniel-yang.tistory.com/71 [iOS/Swift] 의존성 주입, 의존성 역전이란? 의존관계 역전 원칙 (DPI : Dependency inversion principle) 의존관계 역전 원칙은 SOLID의 마지막 원칙으로 상위 모듈이 하위 모듈에게 의존하지 않도록 설계하는 겁니다. 즉, 상위 모듈과 하위 모듈..

    [Swift] WKWebView와 Javascript 사이 통신을 만들어보자

    웹 뷰를 만들고 웹 뷰에서 넘어오는 값을 받거나 웹 뷰에게 값을 넘기는 방법을 알아보자. 웹 뷰 초기 세팅 import Foundation import UIKit import SnapKit import WebKit class MainViewController: UIViewController, ReactorKit.View { ... // safe area view let safetyAreaView = UIView() let progressView: UIProgressView = { let view = UIProgressView() view.trackTintColor = .lightGray view.progressTintColor = .systemRed return view }() // 웹 뷰 담을 뷰 le..

    [Swift] 좌우 무한 collectionView 를 만들어 보자

    좌우로 무한적인 스크롤이 가능한 콜렉션 뷰를 만들어보자. 우선 콜렉션 뷰의 셀들을 나열할 실제 데이터 리스트가 11개라고 치자. 그럼 양 옆에 그 리스트 11개를 복제하여 양옆에 두면 첫번째 데이터에서 -1이 될때 데이터 리스트의 마지막으로 넘어가게 된다. -1이 된 상태에서 애니메이팅을 false로 하여 실제 열번째 셀(11+11)으로 이동하게 하면 눈속임이 완성된다. 말로하면 어려우니 하단을 봐보자.. ex) 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 0 1 2 3 4 5 6 7 8 9 10 이런식의 데이터가 있으면 빨간색이 실체라 하고 다른색은 눈속임용이라 생각하자. 빨간색 0 에서 -1 이 되면 10으로 넘어가고 10에서 애니메이팅을 멈추면 빨간색 10으로 ..

    [Swift] 상단 탭바 페이지 뷰컨트롤러 만들기 (Upper Tab Page View)

    상단 탭바를 가진 뷰컨트롤러를 만들고자 하니 인터넷 상에선 방법이 두가지가 있는거 같다. 콜렉션뷰 + 콜렉션뷰를 사용해서 상단과 하단을 나누어 나타내던지 콜렉션뷰 + 페이지뷰컨트롤러를 사용해서 나타내는 방법이 있었다. 나는 각각의 뷰컨트롤러를 두고 생명주기를 쉽게 컨트롤 하고 싶었기에 콜렉션뷰 + 페이지 뷰컨트롤러 이 방법을 채택 했다. 실무에서 쓰던 코드를 공공연히 볼수 있게 몇몇 코드를 수정한 코드이다. 몇몇 코드가 누락되긴 했지만 참고할 수 있을거같다. 우선 레이아웃부터 잡아보았다. 상단 탭바를 위한 콜렉션 뷰 + 각 콜렉션뷰의 선택된 값을 하이라이트 시킬 하단 라인 뷰 + 각 뷰컨트롤러의 컨텐츠들을 보여줄 페이지 뷰컨트롤러 로 구성되어있다. import Foundation import UIKit ..

    [Swift] UICollectionView 내부 내용에 따른 Cell  동적 높이 설정법

    [Swift] UICollectionView 내부 내용에 따른 Cell 동적 높이 설정법

    콜렉션 뷰에서 내부 셀의 내용에 따라 높이를 각기 유동적으로 하고 싶을 때 사용하는 법이다. 요점은 let layout = UICollectionViewFlowLayout() layout.estimatedItemSize = UICollectionViewFlowLayout.automaticSize 이것을 잘 사용해보자. 우선 뷰컨트롤러 안에 콜렉션 뷰를 만들어보자. class TempViewController: UIViewController, ReactorKit.View { ... let contentCollectionView: UICollectionView = { let layout = UICollectionViewFlowLayout() layout.estimatedItemSize = UICollecti..

    [Swift] NavigationController와 TabBarContoller 무엇으로 감쌀지?

    화면을 설계 할 때 가끔 헷갈리는 부분이 있다. NavigationController가 TabBarController를 감쌀지... TabBarController가 NavgationController를 감쌀지... 그거시 문제로다.. 단순해보이지만 처음에 설계를 잘못하면 뿌리를 걷어내고 코드를 정말 어렵게 다시 짜야하는 초유의 사태가 발생할 수도 있어 기록해놓는다... 단순하게 생각해보면 - TabBarController가 NavgationController를 감쌀 경우 하단의 TabBar를 유지한 상태로 Navigation 이동 (Push, Pop)을 하고 싶으면 TabBarController 의 탭(NavigationController) 하나가 Navigation 스택 하나를 가지고 있으면 된다. 그..

    [Swift] 앱스토어 셀 클릭 시 transition animation 적용하기

    앱스토어에 나타나는 앱들의 리스트를 클릭하면 생동감 있게 셀이 확대되면서 화면전환 되는 것을 해보고 싶어졌다. 다양한 레퍼런스들을 검색하던 중 여러 블로거분들의 글을 참고할 예정이다. 까먹기전에 여기다 글을 남겨놓도록 한다.. https://koggy.tistory.com/24 iOS) Appstore Transition 따라하기(2) - Present Transition AppStore Transition 따라하기의 정수와 묘미인 transition 구성이다. 우리가 만들 Transition은 총 4개이다. - Presentation - Present Transition - Dismiss Transition - interactive Transitioning 분기를 위하여 Transition을 총괄 ko..

    [Swift] SceneKit 사용법

    스티커 이미지 위에 3D 모델을 올리고 싶으면 다음 블로그를 참고해보자. 깃허브의 오픈소스가 생각보다 잘 인식되어 신기했다.. 모델러에게 .obj를 받고 .usdz로 변환 작업 후에 .scn으로 모델을 올리면 된다.. 자세한 것은 블로그를 확인해보자. https://ios-daniel-yang.tistory.com/39 [iOS/Swift] SceneKit의 사용법 (4) - 이미지를 인식하여 3D형상 만들기 시작 오늘은 SceneKit으로 이미지를 인식하여 그 위에 캐릭터를 올려볼 예정입니다. 간단히 설명할 예정이라 자세한 내용은 이전 글을 참고하시길 바랍니다. SceneKit의 사용법 (1) - 정육면체와 달을 ios-daniel-yang.tistory.com https://github.com/Dan..

    [Swift] enum 의 raw value 에 대한 회고

    enum 을 선언 한 후 데이터 타입이 명시되어 있지 않아 컴파일 오류가 난 적이 있다. 간단한 것이지만 알아두지 않으면 이유도 모른 체 해결할 수 없는 경우가 생길 수 있으니 기록으로 남겨놓는다. https://woozzang.tistory.com/8 Swift) Raw Value - Enumeration enum Alignment { case left case center case right } 위 코드는 Alignment 라는 열거형의 선언입니다. 위 case 들은 Raw Value (원시 값) 이 설정되지 않았습니다. Raw Value 를 설정하지 않은 case 들은 그 자체가 고유한 woozzang.tistory.com