일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- combine
- SWIFT
- uitableview
- Human interface guide
- swiftUI
- ios
- 리펙토링
- UICollectionView
- 애니메이션
- rxswift
- RxCocoa
- 클린 코드
- clean architecture
- MVVM
- 리펙터링
- uiscrollview
- swift documentation
- Observable
- Protocol
- collectionview
- ribs
- 리팩토링
- Refactoring
- tableView
- UITextView
- map
- Clean Code
- HIG
- 스위프트
- Xcode
- Today
- Total
목록ios (1096)
김종권의 iOS 앱 개발 알아가기

준비 코드로 UI를 편리하게 작성하기 위해서 Then, SnapKit 프레임워크 설치 pod 'Then' pod 'SnapKit' pod 'Reusable' 사용 방법 의존성 도구 없이 DragDropCollectionView 파일을 복사 붙여넣기하여 사용 (아래 github에 명시) DragDropCollectionView.swift을 리펙토링하여 아래처럼 사용 // // DragDropCollectionView.swift // DragDrop // // Created by Lior Neu-ner on 2014/12/30. // Copyright (c) 2014 LiorN. All rights reserved. // 3rd test for git submodule //Just testing git s..

* 주의: Section이 한개밖에 없는 경우 해당 방법 사용하고, 만약 Section이 여러개면 RxDataSource 사용 방법 포스팅 글 참고 Cell 준비 // MyCell.swift import UIKit final class MyCell: UITableViewCell { private let label: UILabel = { let label = UILabel() label.font = .systemFont(ofSize: 24) label.textColor = .black return label }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseId..

CAKeyframeAnimation keyPath 프로퍼티를 사용하여 애니메이션 결정 key frame 애니메이션은 여러 값을 설정하고 지정한 시간 동안 값 사이에 애니메이션을 제공할 수 있는 기능 CAKeyframeAnimation 사용 방법 keyPath에 값 대입 (어떤 애니메이션인지) values 배열 값에 해당 keyPath에서 사용하려는 값 기입 keyTimes: 0~1에 해당하는 값을 위 values.count 개수만큼 지정 duration: 전체 지속 시간 isAdditive: 현재 위치를 기준으로 애니메이션을 사용할 것인지 @objc private func didTapAnimationButton() { let animation = CAKeyframeAnimation() animation...

1. Starscream을 이용한 WebSockets (웹 소켓) 사용 방법 2. Starscream을 이용하여 WebSockets (웹 소켓) ping, pong 사용 방법 * URLSessionWebSocketTask를 이용하여 WebSocket 사용 방법은 이 포스팅 글 참고 WebSockets이란? 클라이언트와 서버 사이의 동적인 양방향 연결 채널(Socket Connection)을 구성 WebSockets API를 통해 서버로 메세지를 보내면, 별다른 API 요청 없이 응답을 수신 HTTP 통신 방법 vs WebSocket 통신 방법 WebSockets 프로토콜: 접속에만 HTTP를 사용하고 그 후 통신은 WebSockets 독자적인 프로토콜을 사용 WebSockets은 header가 작기 때문..

Firebase Analytics 특성 몇 가지 이벤트를 자동으로 로깅하여 별도의 코드 없이 이벤트 수신 가능 대소문자 구분 ("abc"와 "Abc"는 다른 이벤트로 인식) logEvent(): 앱의 사용량과 행동을 수집 이벤트: 사용자 Action, 시스템 이벤트, 오류 등 사용자 속성: 사용자층을 나눈 개발자가 정의하는 언어 설정 (지리적 위치 등) Analytics SDK 연동 Firebase Console -> Firebase 프로젝트 생성 Firebase 앱 등록, GoogleService-Info.plist 다운로드하여 프로젝트에 포함 sdk 설치 cocoapods 이용 시) pod 'Firebase' pod 'Firebase/Analytics' Firebase SDK 초기화 코드 AppDel..

1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 아이디어 권한 설정코드들을 Observable로 wrapping RxSwift의 concat연산자를 활용하여 Observable들을 순서대로 방출 Observable로 Wrapping하는 방법이 나와있는 위 Observable로 Wrapping, 1 ~ 3번 글 확인 세팅 프..

1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우, create 연..

1. Observable로 Wrapping하여 권한 요청) 위치 권한, 실시간 위치 정보 획득 2. Observable로 Wrapping하여 권한 요청) 사진 권한, 카메라 권한 3. Observable로 Wrapping하여 권한 요청) 마이크 권한, ATT(App Tracking Transparency) 권한 4. Observable로 Wrapping하여 권한 요청) RxSwift의 concat을 이용하여 순서대로 권한 요청 방법 Observable로 wrapping 작업 핵심 기존에 Observable 형태를 리턴해주는 작업이면, RxSwift의 생성자 연산자 중에 deferred 연산자 사용하여 wrapping 기존에 Observable 형태가 아니고 클로저 형태로 값을 받는 경우, create 연..