일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- uitableview
- Protocol
- Refactoring
- swift documentation
- Observable
- Human interface guide
- 클린 코드
- RxCocoa
- rxswift
- 리펙토링
- clean architecture
- UITextView
- collectionview
- swiftUI
- UICollectionView
- MVVM
- 리팩토링
- combine
- ios
- map
- Xcode
- Clean Code
- 스위프트
- ribs
- SWIFT
- HIG
- 애니메이션
- uiscrollview
- tableView
- 리펙터링
- Today
- Total
목록ios (1095)
김종권의 iOS 앱 개발 알아가기
contentInsetAdjustmentBehavior 속성 safeArea를 고려하여 자동으로 레이아웃을 지정해주도록 하는 옵션 구체적으로는 scrollView의 content 영역의 inset을 safe area 고려하여 레이아웃될지 결정해주는 옵션 ContentInsetAdjustmentBehavior의 4가지 옵션 automatic(default): 자동으로 safe area에 맞게 레이아웃 조정 scrollableAxes: 스크롤 가능한 방향만 safe area 고려 never: safe area 상관 없이 적용 always: content는 무조건 safe area 고려 @available(iOS 11.0, *) public enum ContentInsetAdjustmentBehavior : ..
UITableView의 backgroundView 프로퍼티 보통 리스트 형태나 그리드 형태로 데이터를 보여줄 때, 데이터를 불러오기 전에 스켈레톤 뷰 같은것을 보여주어야 하는데 이 때 UITalbeView나 UICollectionView 내부에 있는 backgroundView 프로퍼티를 사용하면 매우 쉽게 적용이 가능 (별도의 뷰 필요 없이 tableView.backgroundView 사용) 이 backgroundView는 tableView의 cell 앞쪽에 위치 ex) tableView에 사용할 cell 정의 final class MyTableViewCell: UITableViewCell { static let id = "MyTableViewCell" private let label = { let la..
UITextChecker 개념 교정기능을 제공하는 클래스 오타 검사 자동완성 및 제안 기능 UITextChecker 오타 검사 오타가 있는 mountein 문자열 준비 (mountain으로 잘 교정되는지 확인을 위함) let str = "mountein" UITextChecker 인스턴스 생성 let textChecker = UITextChecker() rangeOfMisspelledWord(in:range:startingAt:wrap:language:) 메소드를 사용 language 값에는 언어코드가 들어가는데, 이 언어코드는 iSO 639-1가 사용 ex) 영어면 en_US, 한국어면 ko ISO 639-1 언어코드표 이 언어코드는 Locale로 접근하여 획득도 가능 Locale.current.ide..
private 프로퍼티 접근 아이디어 Mirror를 통해 property의 문자열 이름을 통해 접근 Mirror란? 인스턴스의 *display style과 하위 정보를 표현하는 구조체 * display style: struct인지, class인지, enum인지 구분을 위한 값 Mirror는 특정 인스턴스의 타입, 그 인스턴스의 하위 값(인스턴스, 메소드 등)의 정보를 가지고 있는 것 구체적인 개념은 이전 포스팅 글 참고 Mirror로 private 프로퍼티 접근하기 예제 코드 준비 외부에서 SomeClass의 private 프로퍼티인 name에 접근하는게 목적 아래처럼 private 키워드를 사용하면 사용하는쪽에서 접근이 불가능 import UIKit class SomeClass { private var..
PropertyWrapper를 이용한 로깅 * propertyWrapper 개념은 이전 포스팅 글 참고 propertyWrapper를 이용하면 사용하는쪽에서는 일반 property처럼 사용할 수 있지만, 내부적으로 wrapping하여 프로퍼티가 get되거나 set될때 다양한 처리가 가능 set될때 로깅 스택에 쌓아놓는 방향으로하면 사용하는쪽에서는 단순히 프로퍼티에 값만 변경해주어도 자동으로 로깅되므로 쉽게 사용이 가능 propertyWrapper로 로깅하는 구조 기본적인 propertyWrapper 정의 @propertyWrapper struct HistoryProperty { var _wrappedValue: T var wrappedValue: T { get { _wrappedValue } set { ..
기존의 UIButton 액션 핸들러 addTarget 메소드의 #selector 부분에 @objc로 정의한 메소드 이름을 넘기는 방식 button.addTarget(self, action: #selector(handleTap), for: .touchUpInside) @objc private func handleTap() { print("tap button!") } addAction 방식의 액션 핸들러 iOS 14+ 부터 addAction 메소드가 UIControl 확장으로 정의 open class UIControl : UIView { /// Adds the UIAction to a given event. UIActions are uniqued based on their identifier, and sub..
Measurement 개념 1, 2, 3과 같은 숫자에 cm, m 같은 문자열도 같이 붙여서 관리해주는 struct 형태의 Unit ex) 1이라는 meter 단위의 숫자가 있을 때, 이것을 cm 단위로 바꾼 후, 뒤에 "cm"를 붙여서 "100 cm"로 만들고 싶은 경우? 보통은 Int, Double Extension으로 계산식을 넣어서 사용하지만 Measurement를 사용하면 이것들을 모두 지원해주기 때문에 단위 변환이나 "cm"와 같은 이름을 붙이기가 유용 MeasurementFormatter 개념 Measurement로 인스턴스를 만든 후 이 값에 특정 "cm"와 같은 이름을 붙여서 하나의 문자열로 만들 수 있는 포멧터 Measurement로 5 숫자를 500cm로 변환하기 meter를 나타내는..
1. Async, Await 간단 사용 정리 (Concurrency) - 사용 방법 2. Async, Await 간단 사용 정리 (Concurrency) - 동시 처리 * 해당 글에서는 간단한 사용법만 살펴보기 때문에, 개념적인 부분은 이전 포스팅 글 참고 동시 처리 Async, Await를 사용하면 비동기 작업을 completion 클로저 블록 없이 한줄로 처리가 가능 let imageUrlString = "https://images.dog.ceo/breeds/australian-shepherd/pepper.jpg" guard let url = URL(string: imageUrlString) else { return } Task { let image = try await loadImage(url: u..