일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 클린 코드
- HIG
- swift documentation
- UITextView
- ios
- 리팩토링
- Human interface guide
- clean architecture
- UICollectionView
- 리펙토링
- MVVM
- Xcode
- RxCocoa
- Observable
- Protocol
- 애니메이션
- swiftUI
- map
- 스위프트
- Refactoring
- uiscrollview
- ribs
- rxswift
- uitableview
- SWIFT
- combine
- Clean Code
- collectionview
- tableView
- 리펙터링
- Today
- Total
목록2022/05 (31)
김종권의 iOS 앱 개발 알아가기
1. Local Notification (로컬 푸시, 로컬 노티) - 사용 방법 2. Local Notification (로컬 푸시, 로컬 노티) - badge (뱃지) 숫자 처리, 딥링크 처리 권한 요청 시스템 권한은 보통 info.plist에 하지만, 푸시는 특별하게 코드에서 요청 UNUserNoitificationCenter.current() 싱글톤으로 접근 import UIKit import UserNotifications @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [..
1. UISegmentedControl - 기본 사용 방법 2. UISegmentedControl - 커스텀 방법, PageViewController와 사용 방법 UISegmentedControl 커스텀 방법 클래스 준비 import UIKit final class UnderlineSegmentedControl: UISegmentedControl { } UISegementedControl은 아래와 같이 배경색과 divider가 존재 회색 배경과 divider를 지우는 코드 추가 override init(frame: CGRect) { super.init(frame: frame) self.removeBackgroundAndDivider() } override init(items: [Any]?) { super..
1. UISegmentedControl - 기본 사용 방법 2. UISegmentedControl - 커스텀 방법, PageViewController와 사용 방법 UISegmenetedControl 사용 방법 Swift에는 Radio Button이 따로 없고 UISegmentedControl이 존재 ViewController 준비 import UIKit class ViewController: UIViewController { } segmentedControl 한 개와 두 개의 뷰 준비 segmentedControl에 들어가는 label은 UISegmentedControl의 생성자 파라미터 item에서 주입 let segmentedControl: UISegmentedControl = { let contro..
* StoreKit을 이용한 결제 구현 방법은 이 포스팅 글 참고 별점, 평가 팝업 표출 주의사항 애플 문서대로, 사용자에게 앱에대한 충분한 경험을 부여하지 않은 경우 팝업을 띄우지 말 것 ex) 처음 앱을 킨 경우나 onboarding화면에 팝업 x 평가 요청 주기는 최소 1~2주 텀으로 요청할 것 (자주 요청 시 부정적인 인식) 시스템에서 제공하는 Rating 프롬프트 365일 기간 내에 앱당 3번만 노출로 제공 사용자가 설정 앱에서 평가 프롬프트 수신 거부도 따로 가능 시스템의 평가 프롬프트는 필요한 정보만 표시하고 사용자에게 친숙하므로, 되도록이면 시스템에서 제공하는것을 사용할 것 StoreKit 인앱 구매나, 앱 스토어와의 인터렉션과 관련된 기능을 지원하는 framework In-App Purc..
UIStackView의 backgroundColor 속성 UIStackView를 사용할때 주의할 점 backgroundColor 프로퍼티에 색상을 입력해도 iOS13 이하 버전에서는 draw(_:)를 호출해주지 않아서, clear색상으로 적용 myStackView.backgroundColor = .orange // iOS 13이하에서는 적용 x draw(_:) 메소드란? draw(_:) 메소드의 파라미터인 rect는 뷰의 경계이며, 내부적으로 불릴때는 보이는 뷰의 전체 직사각형의 경계 내부적으로 draw(_:) 불리는 타이밍 뷰가 메모리에 올라온 후 (viewDidLoad) 뷰를 그려줄 때 호출 드로잉 사이클이 있으므로, 코드에서 draw(_:)를 직접적으로 호출하지 말고, 다음 loop 사이클에 그려달..
cf) UICollectionViewFlowLayout를 이용한 방법은 이 포스팅 글 참고 수평 스크롤 구현 방향 UICollectionView를 사용하여 스크롤을 구현 UIScrollView를 사용하면 터치 이벤트 시, 어떤 아이템을 터치했는지 체크하기가 까다롭기 때문에 Cell을 사용할 수 있는 UICollectionView 사용 IUCollectionView의 UICollectionViewFlowLayout를 사용해도 되지만, 더욱 복잡한 레이아웃을 쉽게 추가하기 쉬운 확장성 있는 CompositionlalLayout 사용 UICollectionViewCompositionalLayout 개념은 이전 포스팅 글 참고 스크롤 구현은 Timer를 두고 매초마다 collectionView.scrollToI..
Async, Await 이란? 기존에 비동기 처리 방식은 DispatchQueue나 completionHandler를 사용하여 처리했지만, 더욱 편하게 비동기 처리할 수 있는 문법 // DispatchQueue 사용한 비동기 처리 DispatchQueue.global.async { } // completionHandler를 사용한 비동기 처리 let task = URLSession.shared.dataTask(with: url, completionHandler: { data, response, error in }).resume() 비동기 처리란 위와 같이 오래걸리는 작업이 있을 때, 그 작업이 끝나는 것을 기다리지 않고 수행하도록 일을 처리하는 것 이 밖에도 대표적인 비동기 처리 방법에는 RxSwift와..