분류 전체보기196 [Swift] 코드로 스토리보드 연결하기 how to load UIViewController with Storyboard Programmatically 코드로 스토리보드 연결하기 스토리보드에서 뷰컨트롤러에 있는 독의 첫번째 아이콘을 오른쪽 마우스로 드로그앤 드롭 하여 뷰로 떨어뜨려 줍시당 Outlets에서 view를 선택하여 연결해 주면 됩니당 인디케이터에서 뷰 컨트롤러를 클릭하면 xCode 화면 가장 오른쪽에 identity indicator 가 뜬다 만약 뜨지 않으면 아이콘을 눌러 이동. Stroryboard ID를 사용하여 연결해 줄 것이므로 Storyboard ID에 이름을 입력해 줍니다 그 후 코드로 돌아와서 뷰컨트롤러 객체를 얻어 보면 let viewController = UIStoryboard(name: "스토리보드 이름", bundle: nil) .instantiateViewController(withIdentifier: "storyboa.. 2022. 1. 11. [RxSwift] Relays에 대해서 알아보기 Relay란? Observable과 Subject를 할 때는 RxSwift만 import해줘도 되었지만 Relay는 UI에 사용 되고 PublishSubject의 Wrapper 클래스이자 RxCocoa 클래스 이므로 RxCocoa를 임포트 해주어야 함. (RxRelay라고 있으나 RxCocoa 임포트 하면 함께 임포트 됨) Relay는 replay subject 와 비슷한 동작을 수행하지만 Subject, Observable과 달리 .completed, .error 이벤트가 없다. 심지어 .next 이벤트가 아닌 accept(_:) 메소드를 사용합니다. terminate 이벤트를 발생시키지 않기 때문에 Dispose 되기 전까지 동작하여 UI에 사용된다고 함 PublishRelay publish rela.. 2022. 1. 10. [RxSwift] Subject 알아보기 Subject란 무엇일까? Subject는 Observable과 Obsever 둘다 할 수 있다. 여기서 Observable은 관찰 대상이다. Observable은 관찰 가능한 흐름을 생성하고 Observer가 Observable을 구독하여 이벤를 처리하게 된다. Subject는 이 둘을 다 하는 타입으로 관찰가능한 흐름을 생성하고 이벤트를 방출시키며 알맞는 이벤트를 처리하게 된다. Subject 타입 - PublishSubject : 어떠한 값도 없이 생성되며 오직 새로운 구독자에게 elements를 방출한다. - BehaviorSubject : 초기값과 함께 생성되며 이 생성된 값을 구독자에게 재생시키고 최신의 elements을 재생시킨다. - ReplaySubject : 버퍼사이즈와 함께 생성. e.. 2022. 1. 9. [RxSwift] Traits 와 side effect & Subject 기본 Traits traits은 기존 Observable 보다 좀더 작은 범위의 기능을 수행하는 Observable 이다 필수로 알아야 하는 개념은 아니다 하지만 내가 작성한 코드를 다른 사람이 볼때 좀더 명확하게 볼 수 있다. 꼭 필요한 것은 아니란 말씀 Single : .success(value) == .next혹은 .error == .completed 이벤트를 방출한다 데이터를 다운로드 하거나 디스크로 부터 로딩이 걸릴 때 사용되나 보다 Completable .completed 혹은 .error 이벤트를 반환. 어떠한 값도 방출하지 않는다. 만약에 오직 성공과 실패로 끝나는 오퍼레이터가 필요한 경우 사용될 수 있다. 예를 들면 파일을 읽고 그것이 성공했는지 안했는지 방출할 수 있다. Maybe singl.. 2022. 1. 7. [RxSwift] DisposeBag 과 Operator observable은 subscription되기 전까지 아무런 이벤트도 방출할 수 없다 -> 아무것도 할 수 없음 subscription이 옵저버블이 동작하도록 새로운 이벤트를 방출하도록 하고 .error 혹은 .completed 이벤트를 방출하게 하며 종료시키게 하는 트리거 같은 역활을 하는 것! 그렇다면 더이상 옵저버블이 필요 없어지거나 더 이상 이벤트를 방출하고 싶지 않다! 할 때는 유튜브 처럼 구독 취소 할 수 있음 이걸 수행 하는 것이 Disposing의 개념이고 observable은 즉시 종료된다! $0을 default argument라고 부르는 걸 처음 알았당. 책에서의 표현인가? let disposeBag = DisposeBag() 이렇게 DisposeBag을 생성하여 한번에 관리가 가능하.. 2022. 1. 6. [RxSwift] Observable, Operators 그리고 subscribe - 단방향 데이터 플로우 아키텍처에 적용시키기 유리함 - 반응형앱으로 만들기 위해서 프로젝트를 새로 만들 필요는 없음(일부의 코드들을 간단하게 만들고, 새로운 기능들을 RxSwift로 정의하면 되겠다) - MVVM + RxSwift 조합 ㄴ ViewModel Observable 프로퍼티를 방출하게 하는데 이는 View controller의 고정된 코드에서 UIKit controls가 직접적으로 바인드 되게 할 수 있음 -> Observable 프로퍼티를 사용해서 UIKit의 Controls 요소를 옵저빙 할 수 있음 Podfile에서 2022년 1월 기준 아래 pod 추가 pod 'RxSwift', '6.1.0' pod 'RxCocoa', '6.1.0' pod install 로 설치 완료 후 프로젝트 재.. 2022. 1. 5. [iOS/Swift] Custom Font 사용하기 사용할 폰트 다운로드 및 xCode 프로젝트 내부 폴더에 드래그 앤 드롭으로 넣어줍니다. 눈누 - 상업용 무료한글폰트 사이트 상업적으로 이용할 수 있는 무료 한글 폰트를 모아 놓은 사이트 눈누 noonnu.cc 눈누에서 상업용으로 사용가능한 무료 한글 폰트를 다운로드 받을 수 있음 Copy items if needed 옵션을 선택하면 xCode 프로젝트 폴더 내부에 복제되지만 해제하는 경우 원래 폰트가 있었던 폴더와 연결만 됩니다. ! 중요 : 폰트를 사용할 타겟을 선택해 줌 다음으로 Info.plist 파일에 Fonts provided by application 키를 추가해 주어야 합니다. UIAppFonts 추가해 준 폰트를 info.plist에 추가해 주어야 사용가능 꼭 확장자 까지 같이 입력을 해.. 2021. 12. 19. [Swift] RIBs Architecture 개요와 템플릿 설정 뷰 없이 비즈니스 로직만 필요한 경우가 잘 없고 공식적인 프로젝트에서 이러한 아키텍처를 도입하지도 않기 때문에 RIBs 을 공부해야 겠다고 마음먹기 까지 굉장히 오래 걸렸다. 동적 테스트와 UI 테스트를 진행하는 것이 전부였는데 이번에 규모가 좀 있는 프로젝트를 해보면서 테스트의 중요성을 깨닫기 시작했고, 기획이 바뀔 때 마다 비즈니스 로직이 아닌 UI가 수정되어야 하는 상황을 보면서 왜 아키텍처를 도입하여 사용하는지 느끼게 되었다. UI가 비즈니스와 긴밀할 수록 수정하는데 많은 시간이 걸렸다. 결국 MVVC, MVVM 등을 기웃 거리다가 RIBs라는 아키텍처를 알게 되었다. 우버에서 제작한 아키텍처이며 뷰를 필요로 하지 않는 비즈니스 로직을 위한 RIB 을 만들 수 있다는 것과 테스트의 용이성이라는 말.. 2021. 11. 12. [Swift] push notification 정리 (with Firebase) permission과 푸시 받을 때 호출되는 함수 카카오톡을 실행시키지 않은 상태에서 상대방으로 부터 메시지를 받을 때 오는 알람, 혹은 앱에서 광고를 보내기 위해서 등등 많은 곳에서 push notification이 사용되고 있습니당 거의 프로젝트 할 때마다 필수로 구현하기도 하고 처음에 하다보면 꽤나 복잡해서 이번 기회에 정리해 보려고 합니당 🦑🦑🦑 push notification이란 Apple Push Notification service = APNs를 이용해서 앱으로 메시지를 보내는 것을 의미합니당 앱이 실행되지 않은 상태나 백그라운드에 잠들어 있는 상태에서도 사용자에게 푸시 메시지를 보내 줄 수 있습니당 ⭐ 당근~ 혹은 카톡! 하는 것처럼 원하는 사운드를 사용할 수 있고 짧은 텍스트 메시지를 보낼 수도 있습니다 또한 앱 아이콘 옆에 뜨는 뱃지의.. 2021. 10. 27. [SwiftUI 3.0] URLSession 과 List, @Published, @ObservedObject 사용하기 SwiftUI 에서는 뷰에서 사용할 값을 저장하는 방식이 기존 Storyboard 방식과는 다릅니다. 오늘은 뷰 밖의 클래스에서 사용가능한 프로퍼티워레퍼 인 @ObservedObject를 소개하고 아주 간단한 튜토리얼로 사용법을 정리하려고 합니다 @ObservedObject를 알기 전에 ObservableObject에 대해서 알아볼게요 ObservableObject는 Combine에 속한 프로토콜입니다 해당 포스팅에서 Combine을 다루지 않지만 RxSwift의 기능이라고 생각하시면 되요 @ObservedObject를 사용하기 위해서 ObservableObject 프로토콜을 채택해 주어야 합니다. @ObservedObject는 해당 프로퍼티의 값이 변경되면 @Published 프로퍼티 워레퍼가 자동으로.. 2021. 10. 27. [iOS/swift] UINavigaitonBar tint color iOS 15 + iOS 14의 경우 large title 에서 적용되었던 scrollEdgeAppearance 속성이 iOS15에서는 모든 네비게이션에 적용된다고 합니다.. iOS 15에서 프로젝트 생성하여 네비게이션을 사용하거나 기존에 네비게이션을 사용한 프로젝트도 한번씩 확인해야 할 것 같아요 🤔 scrollEdgeAppearance 는 스크롤 가능한 컨텐츠의 edge가 navigation bar 의 edge와 정렬되는 경우 appearance를 세팅해 줍니다! 예를 들어서 big title의 경우 title이 네비게이션에 그려지는 것을 볼 수 있습니당 이 속성의 default 값은 nil 이지만 iOS 15 부터는 모든 네비게이션에 적용되기 때문에 처음 화면에 나타나는 네비게이션은 투명하게 그 이후 스크롤 컨텐츠를.. 2021. 10. 21. [swift 5] 배열 형식의 문자열 만들기 let imageList = ["image1", "image2", "image3"] 와 같은 배열이 있을 때 "[image1, image2, image3]" 형식의 문자열로 바꾸는 함수입니다. func arrayToString(list: [String]) -> String { let itemStr = list.joined(separator: ", ") return "[" + itemStr + "]" } joined를 사용해서 각 배열 아이템 사이 사이에 쉼표를 추가 해주는 코드 입니다. json 통신할 때 가끔 각 아이템을 어레이 형식의 스트링으로 만들어 보내야 하는데 위와 같이 보내 줍니다. 틀린 내용이 있거나 더 좋은 방법이 있으면 댓글 부탁드려욤 🤗 참고 사이트 https://stackoverflo.. 2021. 7. 26. 이전 1 ··· 8 9 10 11 12 13 14 ··· 17 다음