일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리팩토링
- 리펙터링
- clean architecture
- Refactoring
- collectionview
- SWIFT
- UITextView
- 리펙토링
- ribs
- uiscrollview
- combine
- Clean Code
- HIG
- Human interface guide
- 스위프트
- UICollectionView
- Xcode
- uitableview
- Protocol
- rxswift
- 애니메이션
- tableView
- ios
- RxCocoa
- MVVM
- swift documentation
- map
- Observable
- swiftUI
- 클린 코드
- Today
- Total
목록분류 전체보기 (1644)
김종권의 iOS 앱 개발 알아가기
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DBxdZ/btqQptw988z/uk8WnhX7UidYoXdqOOhUZ1/img.png)
Firebase프로젝트 세팅 Firebase홈페이지 3번에서 사용 설정 누르면 아래화면처럼 loading Xcode프로젝트 세팅 Firebase SDK연동, FirebaseApp.configure()까지 작성: ios-development.tistory.com/230 앱에 crashlytics 추가 pod 'Firebase/Crashlytics' pod 'Firebase/Analytics' build phase에서 빌드스크립트 생성 후 작성 (4번: build script 이름 설정) 5번 코드: debug버전에서는 dSYM을 올리지 않으므로 (배포하지 않으므로) debug버전이 아니면 crashlytics를 실행하라는 의미 if [ "${CONFIGURATION}" != "Debug" ]; then "..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/SSXoE/btqPWYMujX4/NbWFeuYUSOWv0uQFsZJGOK/img.png)
1. fastlane이란? 2. Bundler란? cocoapod 동기화 방법? 3. fastlane match (certificate, provisioning profile 정보를 git에 저장) 4. fastlane build_app (빌드, firebase에 배포) 5. fastlane 앱 스토어에 배포 (App Store Connect) 6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer에 등록 방법 (register_devices) *7. fastlane 총 정리 및 phase별 configuration 설정, 환경변수 설정 *8. fastlane과 Bitrise를 이용한 자동 배포 구축 방법 cf) fastlane 환경 변수 (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/su1Pv/btqPC0qOLgy/xVwAMf4GTXJWedTdJjPvF0/img.png)
기능 구현 내용 // // ViewController.swift // StringProcessing // // Created by 김종권 on 2020/12/10. // import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("12345".substring(from: 1, to: 3)) // 234 print("12345".remove(startInd: 2, length: 2)) // 125 print("12345".insertAt(2, string: "7")) // 127345 } } extension String { // from부터 to까지 String fun..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bWM13S/btqPKtrtieG/S4xoRPfiVLuKABJfp3DhaK/img.gif)
cocoapod pod 'AnyFormatKit' 구현 import import AnyFormatKit 델리게이트 함수에 적용 textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 예제1) 폰 번호 포맷 - 010-1234-2134 extension ViewController: UITextFieldDelegate { func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { guard..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lihlL/btqPe3gduRy/qU1WhVPcWJOtwfqeJ9Onfk/img.png)
1. fastlane이란? 2. Bundler란? cocoapod 동기화 방법? 3. fastlane match (certificate, provisioning profile 정보를 git에 저장) 4. fastlane build_app (빌드, Firebase에 배포) 5. fastlane 앱 스토어에 배포 (App Store Connect) 6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer에 등록 방법 (register_devices) *7. fastlane 총 정리 및 phase별 configuration 설정, 환경변수 설정 *8. fastlane과 Bitrise를 이용한 자동 배포 구축 방법 cf) fastlane 환경 변수 (..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d7EUTR/btqOVJQd4LR/jLr6fv1YzSASt3iCkoevJ0/img.png)
1. fastlane이란? 2. Bundler란? cocoapod 동기화 방법? 3. fastlane match (certificate, provisioning profile 정보를 git에 저장) 4. fastlane build_app (빌드, Firebase에 배포) 5. fastlane 앱 스토어에 배포 (App Store Connect) 6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer에 등록 방법 (register_devices) *7. fastlane 총 정리 및 phase별 configuration 설정, 환경변수 설정 *8. fastlane과 Bitrise를 이용한 자동 배포 구축 방법 * bundler를 이용하여 coco..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TupST/btq0vPFTanZ/xIBNqkZjWQKMAIdNgWoJHK/img.png)
1. fastlane이란? 2. Bundler란? cocoapod 동기화 방법? 3. fastlane match (certificate, provisioning profile 정보를 git에 저장) 4. fastlane build_app (빌드, Firebase에 배포) 5. fastlane 앱 스토어에 배포 (App Store Connect)fastlane build_app (빌드, 배포) 6. fastlane register devices, 디바이스 정보(UDID, Name) Apple Developer에 등록 방법 (register_devices) *7. fastlane 총 정리 및 phase별 configuration 설정, 환경변수 설정 *8. fastlane과 Bitrise를 이용한 자동 배포..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/8b4PC/btqOH9N3EjS/FSKZgnBMt9qmsAJd7o5nfk/img.gif)
원리 Date()라는 것을 사용하여, 화면이 처음 등장한 시간 때를 기록 Timer의 scheduler에서 현재 시간과, 위의 기록된 시간을 비교하여 시간이 얼마나 지났는지 체크 위와 같이 하면, 사용자가 background에 갔다와도 시간이 흐른만큼 Timer에 반영 주요 코드 Timer객체를 전역에 선언 (Timer가 필요없을 때 invalidate시켜주기 위함) var timer = Timer() ... deinit { timer.invalidate() } 처음 화면이 들어난 시간을 기록하기 위해 Date형의 변수를 전역에 선언 var startTime: Date? Timer로직 함수 private func setTimer(startTime: Date) { DispatchQueue.main.asyn..