커스텀 네비게이션바의 색과 상태바의 색 맞추기 커스텀 네비게이션을 만들게되면서 상태바와 색을 맞춰야하는 일이 생겼다. 노치에 따라 상태바에 UIView 를 얹어서 색으로 맞추는 원리로 만들었다. iPoneSE 2세대 iOS 13.0 노치가 생긴 이후 Code Extension 으로 UIViewController 에 함수를 추가. extension UIViewController { func setupStatusBar(_ color: UIColor) { // 1. if #available(iOS 13.0, *) { // 2. let margin = view.layoutMarginsGuide let statusbarView = UIView() statusbarView.backgroundColor = color..
Splash 화면 만들기 하단 출처의 개발자문서에서 애플은 첫번째 화면을 launch screen 과 흡사하게 만들라고 하고 있다. SplashViewController 에서 로그인 분기처리를 하기 위해서 Launch Screen 과 동일한 Splash 스토리보드를 만들었다. 로그인 분기처리 AppDelegate.swift 에서 로그인 유무를 판단할 수 있는 변수를 생성해두고 앱이 실행되면 application(_:didFinishLaunchingWithOptions:) 메서드 안에서 분기처리해서 변수를 바꾸어주었다. SplashVC // MARK: - Properties // AppDelegate 에서 생성한 로그인 유무 변수 private let appDelegate = UIApplication.sh..
오픈 라이브러리 PanModal 사용하기 모달창을 띄우고 싶은 뷰컨 import PanModal //... // MARK: - @IBAction Properties @IBAction func sortButton(_ sender: Any) { let storyboard = UIStoryboard(name: Const.Storyboard.Name.SortPanModal, bundle: nil) let vc = storyboard.instantiateViewController(withIdentifier: Const.ViewController.Name.SortPanModal) as! SortPanModalVC self.presentPanModal(vc) } 모달창 뷰컨 import PanModal class S..
Login tutorial using Apple REST API 1. Capability 추가 프로젝트에서 Signing & Capabilities 에서 Sign in with Apple 추가한다. 2. Apple Developer 에 App ID, Service ID, Key 등록 App ID 를 등록해준다. Sign In with Apple 체크해준다. 위와 같이 Service ID 도 등록해준다. Key 도 등록해준다. 서버에서 요구하는 것들을 세팅해준다. 아래의 링크에서 apple developer 에서 세팅요소들이 소개된다. passport-apple 로 웹에서 애플로그인 연동 3. 버튼 추가하기 Buttons - Sign in with Apple - Human Interface Guidelin..
서버 통신 시 success 일 경우 data 가 넘어오지만 fail 일 경우 넘어오지 않기도 하기 때문에 data 부분을 옵셔널로 선언해주어야 한다. codingkey 를 사용해서 다음과 같이 서버에서 넘겨주는 변수명을 맞출 수 있다. init() 을 통해서 아무런 값이 들어오지 않을 때 초기화도 가능하다. struct HomeDataModel: Codable { let status: Int let success: Bool let message: String let data: HomeResponse? enum CodingKeys: String, CodingKey { case status = "status" case success = "success" case message = "message" case..
UIDevice 를 extension 으로 아이폰의 기종유무를 저장하는 변수를 만든다. import UIKit extension UIDevice { public var isiPhoneSE: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone && (UIScreen.main.bounds.size.height == 568 && UIScreen.main.bounds.size.width == 320) { return true } return false } public var isiPhoneSE2: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phon..
viewDidLoad() 에서 화면전환 하면 원하는 뷰 전환이 이루어지지 않았다. view 가 다 보여지기 전에 화면전환을 하면 위와 같이 콘솔창에 찍힌다. class SplashVC: UIViewController { // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() // view 가 다 보여지기 전에 화면전환을 하면 위와 같이 콘솔창에 찍힌다. // 자연스럽게 뷰가 전환되지도 않는다. presentToLogin() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // 다음과 같이 뷰가 다 나타난 후에 화면전화를 진행해야한..
제플린에서 쉐도우 설정 및 동적으로 셀크기 설정 backView.layer.cornerRadius = 10 backView.layer.shadowOffset = CGSize(width: 2, height: 2) backView.layer.shadowRadius = 7 backView.layer.shadowColor = UIColor.black.cgColor backView.layer.shadowOpacity = 0.14 다음과 같이 매칭이 된다. 우린 extension 으로 편하게 사용할 것! import Foundation import UIKit extension CALayer { func applyShadow( color: UIColor = .black, alpha: Float = 0.5, x: CG..
- OpenSourceLibrary
- rxswift
- CloneCoding
- SwiftUI
- WWDC
- containerBackground
- urlsession
- 서버통신
- UserDefaults
- WidgetKit
- MOYA
- YPImagePicker
- Protocol
- configurable widget
- MVVM
- 2022 KAKAO TECH INTERNSHIP
- Widget
- github
- WWDC22
- async/await
- APNS
- Swift
- watchOS
- Notification
- Firebase
- RxCocoa
- Objective-C
- projectsetting
- Algorithm
- IOS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Total
- Today
- Yesterday