apple/iOS, UIKit, Documentation 82

[iOS] present 이후 pushViewController

present 이후 pushViewController 그러니까 내가 하고싶은 말은 modal로 띄워진 창에서 pushViewController가 먹히지 않는 상황에 대한 설명이다. 다른 포스팅은 스토리보드를 이용하고 있었고, 난 코드 기반으로 UI를 구성하기에 이에 대한 포스팅을 남겨두고자 함. 상황) view A, B, C 세가지가 있다고 가정 👉 ViewA viewA는 SceneDelegate에서 기본적으로 UINavigationController를 Embed in하고 있음. func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { gua..

iOS 최상단 ViewController + UIWindow (keywindow)

iOS 최상단 ViewController + UIWindow (keywindow)최상단에 위치한 ViewContoller를 재귀를 이용해 안전하게 찾기  최상단 ViewController를 찾는 코드각 컨트롤러의 객체 타입에 맞게 재귀를 이용해 최상단 뷰 컨트롤러를 찾는 코드 public extension UIViewController { func topMostViewController() -> UIViewController { if let presentedViewController = self.presentedViewController { return presentedViewController.topMostViewController() } ..

[iOS/Swift] init과 super.init에 대해서 알아보자. 🤔

init과 super.init에 대해서 알아보자. ✅ init과 super.init에 대해서 알아보자. 개발을 하면서 테스트코드 작성을 위해서 init으로 프로퍼티들을 초기화 시키다 보니 init에 대해서 궁금증이 생겼다. 그럼 정리 ㄱㄱ SwiftUI를 통해서 코드를 작성해 보았음 ✅ init에 대해서 큰 틀만 잡고 가자면 1. 초기화 메소드의 이름은 init으로 통일된다. 2. 매개변수의 개수, 이름, 타입은 임의로 정의할 수 있다. 3. 매개변서의 이름과 개수, 타입이 서로 다른 여러 개의 초기화 메소드를 정의할 수 있다. 4. 정의된 초기화 메소드는 직접 호출되기도 하지만, 대부분 인스턴스 생성 시 간접적으로 호출된다. ✅ 아래 코드를 보자. class Student { var age: Int v..

iOS 오픈소스 라이선스 페이지 (뱅크샐러드)

iOS 오픈소스 라이선스 페이지 (뱅크샐러드)오픈소스 라이선스 페이지를 만들어보고자 함.뱅크샐러드에서 오픈소스에 채용 이스터에그를 넣어두었는데 사이드 프로젝트에서도 도입하고 했고, 인턴하는 회사에서도 넣자고 해서 겸사겸사 만들어보고자 함.코드 파일아래는 샘플 파일     ✅ 환경 Swift 5 Xcode 13 RxSwift 6 SnapKit Then 폴더 구조간단한 페이지라 MVC 기반으로 빠르게 작업하고자 함.  🟠 UIViewController+.swiftimport Foundationimport UIKitimport Thenextension UIViewController { func showOpenSourceWebVC(data: OpenSourceModel) { let vc =..

iOS Lottie 알아보기 (.json, .lottie)

iOS Lottie 알아보기 모든 걸 코드로 구현할 수 없어서 적당히 로티를 사용하는 걸로 하자. 변경로그2022년 2월 19일 03시 13분 최초 포스팅2022년 4월 29일 15시 05분Lottie AnimationView width, height 적용이 되지 않는 문제에 대한 고찰기존 샘플 코드에서 잘못된 레이아웃 수정2022년 4월 30일 16시 39분로티 이미지 색상 변경2024년 11월 15일 03시 01분dot-lottie 오픈소스 사용시 주의할 점    로티 오픈소스 사이트https://github.com/airbnb/lottie-ios/tree/master/Example/iOS/ViewControllers GitHub - airbnb/lottie-ios: An iOS library to..

Showing All Messages Undefined symbol: __swift_FORCE_LOAD_$_XCTestSwiftSupport

Showing All Messages Undefined symbol: __swift_FORCE_LOAD_$_XCTestSwiftSupport 카카오 맵 API를 사용하려고 하는데 에러가 발생함아직 초보자라서 framework, libraray 등 관련 오류가 터질때마다 해결하는데 시간이 너무 오래 걸린다 ㅠㅠ product 타겟에 오류 원인처럼 XCTests를 넣어주면 오류를 1차적으로 제거할 수 있으나 올바른 처리 방법은 아님.근데 가만히 생각해니까 테스트 프레임워크가 들어가는게 이상한거 같음.프로덕트 타겟에서 테스트 타겟으로 가야하는 부분들을 완전히 제거해 줌.  그냥 찾아보다가 rpath 관련해서 다른 오류도 있어서 하나 더 작성해 봄.  rpath도 환경 관련 이라는데 코코아팟에서 처리가능한 것..

[iOS] TTGTagCollectionView에 대해서 알아보자.

✅ 이번 시간에는 TTGTagCollectionView에 대해서 알아보자. 헤더뷰에 붙여서 사용하는 코드로 사용했었는데, 기능은 다양하니까 살펴보면 좋을듯! 근데 얘는 pod init으로 만들어야지 SPM 사용시 복잡하다고 함. https://github.com/zekunyan/TTGTagCollectionView GitHub - zekunyan/TTGTagCollectionView: Useful for showing text or custom view tags in a vertical or horizontal scrollable view Useful for showing text or custom view tags in a vertical or horizontal scrollable view and s..

Swift Protocol (@objc, extension 기본 구현)

Swift Protocol (@objc, extension 기본 구현) 프로코콜을 작성할 때 @objc 키워드를 이용하면 optional 처리하여 채택하는 쪽에서 기본 구현을 하지 않아도 되었음. 근데 개발을 하다 보니까 @ojbc를 사용하지 않으면서 처리할 수 있는 방법이 없을까 찾아보기 시작근데 UITableViewDelegate를 까보니까 내부 구현이 Swift인데, 기본 구현을 강제하지 않음. 그러니까 프로토콜 구현에 @objc 없이 사용 가능 해결Swift로 작성할 때는 protocol의 extension을 추가해 메서드를 구현해주면 됨 관련 개념으로는 Mixin이 있음 참고에 링크 추가protocol MyInterface { func add() func remove()}exten..

iOS Starscream 총정리

iOS Starscream 총 정리 Starscream을 통해서 소켓통신을 하는 방법에 대해서 알아보고자 함.Starscream이란 iOS에서 소켓 통신을 도와주는 오픈소스웹소켓 기반으로 사이드프로젝트에서 사용해보았고, 인턴에서도 또 사용하는데 자주 사용하는 것 같아서 공부 연관포스팅[iOS RxStarScream 총정리](https://rldd.tistory.com/271)[iOS Starscream 총정리](https://rldd.tistory.com/272)[iOS RxDelegateProxy 만들어보기 #1](https://rldd.tistory.com/273)[iOS RxDelegateProxy 만들어보기 #2 - StarScream + RxProxy](https://rldd.tistory.co..

iOS Snapkit 나만의 정리 모음

iOS Snapkit 나만의 정리 모음 내가 스냅킷 공부하면서 정리하고자 작성한 자료추후에 사용하면서 점차 업데이트하기 히스토리(init) 2021. 8. 25. 13:21 : 최초 포스팅 (목차 5까지)(update) 2022. 1. 14. 21:04 : (목차 6번 추가)(update) 2022. 2 .18 20:52 : (목차 7~ 10 추가, LayoutTraining.zip 코드 추가)(update) 2022. 9 .22 19:00 : (코드 스타일에 대한 첨언)(update) 2022. 9. 25 00:11: (FlexLayout, PinLayout추가) 및 포스팅 코드 스타일 변경예제 파일을 업데이트 하려고 했으나, 너무 해야할 일들이 많아서 포스팅에 나온 코드의 일부를 정리(update) ..