Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] Apple 로그인 구현 방법
UIKit/Swift 2024. 7. 2. 03:31

시작타 플랫폼 소셜로그인을 사용할 경우, 심사 지침에 따라 Apple 로그인을 필수적으로 구현을 해줘야 한다고 합니다.그래서 오늘은 Apple 로그인을 구현하는 방법을 알아보려 합니다.  Capability 추가Apple 로그인 기능을 사용하기 위해, 가장 먼저 해야 할 일은 Capability에서 Sign in wiht Apple을 추가해줘야 합니다.이렇게 해주면 초기설정 완료  로그인 버튼 생성기본적으로 애플에서 제공하는 로그인 버튼 클래스가 존재합니다.당연히 커스텀으로도 구현할 수 있습니다. 여기서 중요한 게 디자인의 직관성을 위해, 애플이 로그인 버튼 관련 여러 가이드라인 을 만들어 놨습니다.제공되는 버튼 및 커스텀 버튼을 사용하기 전에, 꼭 HIG를 숙지해서 작업해 주도록 합시다 오늘은 제공되는..

article thumbnail
[iOS/Swift] TextField를 바인딩 시켜보자(MVVM, RxCocoa 원리)
UIKit/Swift 2023. 11. 28. 01:40

시작 이전 글에서 [iOS/Swift] MVVM 패턴의 Data Binding에 대해서 알아보자! (Closure, Observable, Combine) 간단하게 바인딩을 하는 법을 알아봤습니다. 이전 글의 방법은 'ViewModel -> View 바인딩'으로 어디선가 데이터를 받아오면, ViewModel의 데이터들이 View와 결합되어, 즉시 View에 업데이트 되게 만들었고 이번에 공부해 볼 것은 'View -> ViewModel 바인딩' 에 대해서 알아보려고 합니다. 말 그대로 이번엔 View(사용자)에서 입력 받은 데이터를 즉시 ViewModel에 결합시키는 방법을 배워봅시다. 일단, 들어가기 전에 간단히 로그인 화면을 생각해 봅시다. 로그인 화면은 먼저 사용자가 ID와 Password를 입력을 ..

article thumbnail
[iOS/Swift] sizeToFit, sizeThatFits 사용법
UIKit/Swift 2023. 4. 10. 16:54

시작 sizeToFit와 sizeThatFits 두 메서드 모두 해당 콘텐츠에 따라 자동으로 크기를 조절해 주는 메서드입니다. 간단한 예제와 함께 빠르게 설명하고 끝내겠습니다. sizeToFit 간단히 설명하면, 뷰가 현재 포함하고 있는 콘텐츠에 맞게 크기를 조절합니다. 예를 들어, Label이 있다고 해봅시다. let textLabel: UILabel = { let label = UILabel() label.numberOfLines = 0 label.backgroundColor = .secondarySystemBackground label.text = "안녕하세요" + "\n" + "저는 현재 iOS 공부중입니다." + "\n" + "가자" return label }() override func vie..

article thumbnail
[iOS/Swift] NavigationController의 ToolBar를 코드로 만들어 봅시다
UIKit/Swift 2023. 4. 10. 03:41

시작 NavigationController의 ToolBar를 코드로 만들어 봅시다. ToolBar도 NavigationBar와 만드는 방법이 비슷하더라고요. 참고로 ToolBar와 TabBar는 완전히 다른 기능을 하는 클래스입니다. 또한 TabBar는 UINavigationController에 속해 있지도 않고요. 여기서는 ToolBar를 만들 거예요! 한번 만들어 봅시다. ToolBar ToolBar 만드는 방법은 1. UINavigationController의 계층에 있는 ToolBar를 사용 2. 직접 UIToolBar 만들어 주는 방법이 있습니다. 오늘은 UINavigationController를 통해 ToolBar를 구현해 보겠습니다. 일단 ToolBar를 사용하기 위해선 당연히 UINavig..

article thumbnail
[iOS/Swift] Life Cycle의 loadView
UIKit/Swift 2023. 3. 31. 00:23

시작 간단히 할 예정이라 먼저 초스피드로 뷰 컨트롤러의 Life Cycle을 알아봅시다. 뷰컨의 Life Cycle의 순서 loadView 뷰를 생성합니다. (시스템에서 자동 호출) ⬇ viewDidLoad 뷰가 로드되고 작업을 수행 (앱이 실행되고 오직 한 번만 작업을 수행) ⬇ viewWillAppear 뷰가 화면에 나타나기 직전 준비 작업을 수행 (뷰컨으로 다시 되돌아올 때마다 작업을 다시 수행) ⬇ 뷰가 화면에 나타남 ⬇ viewDidAppear 뷰가 화면에 나타난 후 작업을 추가적으로 수행 ⬇ viewWillDisappear 뷰가 화면에서 사라지기 전에 마무리 작업을 수행 (메모리는 아직 존재) ⬇ 뷰가 화면에서 사라짐 ⬇ viewDidDisappear 뷰가 화면에서 완전히 사라진 후 작업을 수..

article thumbnail
[iOS/Swift] 동적 디스패치(@objc dynamic)
UIKit/Swift 2023. 3. 27. 14:37

시작 공식문서에서 MapKit의 Annotation 예제를 살펴보던 중 @objc dynamic var라는 키워드가 나오더라고요. annotation 예제 공식문서 MKAnnotation - coordinate 공식문서 Realm에서도 이런 키워드를 봤던 거 같은데, 그래서 오늘 간단히 한번 정리해 보고 넘어가려고 글을 적게 됐습니다. 정적(static) / 동적(dynamic) 디스패치 들어가기 전에 간단히 차이섬을 알아봅시다. 👉 정적(static) 디스패치 컴파일러가 컴파일 시점에 호출해야 할, 메서드의 실제 위치를 미리 알고 있기 때문에, 매우 빠르게 동작합니다. 컴파일 타임에 결정이 되기 때문에, 상대적으로 속도 빠릅니다. 모든 구조체는 이와 같이 동작합니다. 대신 클래스에서는 상속을 못하게 되..

article thumbnail
[iOS/Swift] 유닛 테스트(Unit Test) 사용 방법
UIKit/Swift 2023. 2. 20. 21:41

유닛 테스트(Unit Test) 사용하려는 기능이 개발자의 의도에 맞게 동작하는지 테스트를 하는 작업입니다. Unit Test에는 간단하게 "FIRST"라는 원칙이 있다고 합니다. 속도 (Fast) 느린 테스트는 개발자가 코드를 수정하고 결과를 확인하기까지 시간이 많이 걸리므로 생산성을 저하시키죠. 따라서 유닛 테스트에서는 빠른 속도로 테스트를 수행할 수 있도록 설계해야 합니다. 독립적 (Independent / Isolated) 유닛 테스트는 각각의 테스트가 서로 독립적으로 실행될 수 있어야 합니다. 이것은 특정 테스트의 결과가 다른 테스트에 영향을 미치지 않고 독립적으로 실행한다는 것을 의미합니다. 이러한 방식으로 작성된 유닛 테스트는 코드 변경에 대해 신속하게 반응할 수 있습니다. 반복적 (Repe..

article thumbnail
[iOS/Swift] 디버깅을 통해 메모리 누수를 찾아보자(Debug, Memory Leaks)
UIKit/Swift 2023. 2. 17. 20:23

메모리 누수(Memory Leak) 란? 프로그램에서 사용한 메모리를 해제하지 않고 계속 사용하는 상황을 의미합니다. 두 객체 이상이 서로를 참조할 때 참조가 끊기지 않는 문제점(Retain Cycle)이 발생하게 되죠. 이런 상황은 시스템의 리소스가 부족해지거나 앱이 충돌하는 등의 문제를 발생시킵니다. 메모리 누수를 해결하려면 기본적으로 누수가 발생하는 객체를 해제해야 합니다. 객체를 참조하는 변수를 nil으로 설정하거나 weak, unowned와 같은 키워드를 통해 참조를 관리할 수 있죠. 디버깅 방법 확인 방법으로는 이와 같이 2가지 방법이 있습니다. Debug Memory Graph 그리고 Profile에서 Leaks Instrument 사용방법에 대하여 알아봅시다. 일단 코드는 이와 같습니다. ..

article thumbnail
[iOS/Swift] MVVM 패턴의 Data Binding에 대해서 알아보자! (Closure, Observable, Combine)
UIKit/Swift 2023. 2. 14. 16:16

MVVM 란? Model-View-ViewModel로 구성된 아키텍처 패턴 중 하나로, 데이터를 처리하는 모델(Model), 사용자에게 보여지는 UI인 뷰(View), 뷰에 바인딩되어 모델과 뷰 사이를 이어주는 뷰-모델(View Model)로 분리한 패턴이다. 특징으로 Model과 View뿐만 아니라 Binding을 통하여 View와 View Model 간의 의존성까지 최소한 형태로, 데이터 처리 로직과 UI 간 상호 영향이 적어 모듈화를 통해 재사용성을 높이고 및 역할별로 Unit Test가 용이해진다. 대신 설계가 복잡하고 간단한 프로젝트에서는 View Model 설계가 오히려 능률이 떨어질 수 있다. 또한 Data Binding의 과정이 메모리효율이 안 좋다고 한다. 참고 위키 📚 Model 데이터..

article thumbnail
[iOS/Swift] UINavigationBar 사용 방법
UIKit/Swift 2023. 2. 7. 16:35

이번글은 스토리보드 대신 코드로 작성할 때 내비게이션 바의 모양 및 기타 설정 관련한 일종의 Cheat Sheet을 써보겠습니다. 설명은 이전글 [iOS/Swift] UINavigationController 살펴보기 를 참고해 주세요. UINavigationController 생성 방법 UINavigationBar를 사용하기 위해선 일단 UINavigationController를 생성해야 됩니다. SceneDelegate에서 작성 func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (scene ..

반응형