일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 애니메이션
- Human interface guide
- rxswift
- uiscrollview
- swiftUI
- clean architecture
- collectionview
- RxCocoa
- 리팩토링
- Refactoring
- Observable
- MVVM
- Xcode
- HIG
- swift documentation
- 클린 코드
- 스위프트
- Protocol
- uitableview
- tableView
- ribs
- combine
- map
- UITextView
- 리펙토링
- 리펙터링
- Clean Code
- ios
- SWIFT
- UICollectionView
- Today
- Total
목록분류 전체보기 (1636)
김종권의 iOS 앱 개발 알아가기
1. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - Share Extension 생성까지 2. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - UI 구현 3. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - 데이터 교환 지난 포스팅 글까지 한 것) Share Extension 생성 앱에 Target으로 Share Extension을 추가하여 아래처럼 ExInstagramShareExtension 모듈이 추가된 상태 UI 구현 자동으로 생성된 ShareViewController..
1. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - Share Extension 생성까지 2. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - UI 구현, 데이터 교환 3. UIActivityViewController 인터페이스 제공 방법 (share extension, share sheet) - 데이터 교환 UIActivityViewController의 share sheet 인터페이스 제공 UIActivityViewController를 띄우면 보이는 화면을 share sheet라고 명칭 사진을 다른앱으로 공유하기 위해서 여기서 인스타그램을 누르면 하..
UIImage에서 Data로 변환에서의 주의사항 UIImage를 서버로 올리거나 데이터 교환을 할 때 Data형태로 변환해야할때가 있는데 이 때 alpha값(투명도)이 제거되는 jpegData로 쓸 것인지, pngData로 쓸 것인지 판단이 필요 (반대로 Data에서 UIImage로 변환할때는 Data의 bit를 확인하여 jpg인지 png인지 판단이 가능) 방안: UIImage를 Data로 변경할 때 alpha정보를 파악하여 jpegData를 사용할지 pngData를 사용할지 선택하여 사용 UIImage에서 alpha 정보 아는 방법 - alphaInfo alphaInfo란 CGImage의 프로퍼티인데 이 정보를 사용하면 alpha값이 있는지 유무 판단이 가능 alphaInfo는 enum으로 구현된 것..
shouldRasterize 개념 CALayer의 bool 프로퍼티 open class CALayer : NSObject, NSSecureCoding, CAMediaTiming { open var shouldRasterize: Bool } compositing전에 bitmap으로 만들고 이 bitmap을 활용하여 화면에 그림을 그릴지 여부 (default값은 false) *compositiong: 여러 개의 그래픽 요소를 하나의 이미지로 결합하는 프로세스를 의미 shouldRasterize를 true로 하게되면 CALayer들을 픽셀로 판단하여 bitmap으로 변환하여 그림을 그림 CALayer를 통해 매우 복잡한 그림을 그려야할때 true로 사용하는것이 유리 (CALayer에 의해서 다양한 그림을 그릴..
프로퍼티를 assign한다는 의미 assign한다는 것은 아래처럼 특정 값을 변수에 대입한다는 의미 // a에 1을 assign하는 형태 let a = 1 assign되는 2가지 형태 primary type, struct와 같은 value type을 assign하는 경우 value type을 assign하게되면 a프로퍼티는 value type가 됨 // a에 1을 assign하는 형태 let a = 1 class와 같은 reference type을 assign하는 경우 reference type을 assign하게되면 해당 프로퍼티는 reference type이 됨 class C {} let c = C() reference type 주의사항 reference type이라는 의미를 주의할 것 아래와 같이 c..
scrollToRow UIScrollView에서 제공하는 scrollToRow(at:at:animated:)라는 메소드를 활용하여 scrollToTop, scrollToBottom과 같은 것을아래처럼 호출이 가능 tableView.scrollToRow(at: .init(row: 0, section: 0), at: .top, animated: true) 하지만 scrollToTop을 위해 위처럼 작성할 경우 IndexPath의 row값이 없는 경우 크래시가 발생 // terminating due to uncaught exception of type NSException tableView.scrollToRow(at: .init(row: 0, section: 0), at: .top, animated: true..
기초 지식) Throttle와 Debounce 개념 throttle을 10초로 걸어놓은 경우, 이벤트가 3번 발생했을 때 첫번째 이벤트만 10초후에 실행 debounce를 10초로 걸어놓은 경우, 이벤트가 3번 발생했을 때 마지막 이벤트가 발생하고 나서 10초후에 실행 (이벤트가 도중에 들어오면 또 10초 연장된 후 발행) 차이점? throttle은 무조건 10초안에 이벤트가 하나씩 발행되고, debounce는 10초가 지나기 전에 또 다른 이벤트가 들어오면 다시 10초 딜레이 후 마지막 이벤트를 실행 사용처 throttle: 버튼 탭 debounce: 검색 입력 Debounce 직접 구현해보기 Debouncer 클래스 선언 class Debouncer { } 일정 seconds 후에 실행되어야하므로 ..
기본지식 1) capture list 개념 closure = { [weak self] in // Void)? } 그래서 보통 위와 같은 전역변수가 아닌, 함수 or 메서드에 @escaping 키워드를 붙이는 것 func someFunc(_ closure: @escaping (Void) -> Void) { } 기본지식 3) [weak self]를 안써서 memory leak을 일으키는 코드 SomeClass의 setupClosure() 메서드를 보면 closure를 assign할 때 self를 집어넣음 -> retain cycle 발생 1) SomeClass 인스턴스가 closure 프로퍼티 참조 2) closure 프로퍼티가 SomeClass 인스턴스 참조 (이 부분이 클로저 안에서 self를 참조해서 ..