일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리펙토링
- 애니메이션
- uitableview
- 스위프트
- map
- Refactoring
- 리펙터링
- swift documentation
- tableView
- MVVM
- 클린 코드
- Xcode
- clean architecture
- UITextView
- UICollectionView
- Clean Code
- ios
- uiscrollview
- SWIFT
- combine
- HIG
- 리팩토링
- ribs
- rxswift
- Observable
- swiftUI
- RxCocoa
- Protocol
- Human interface guide
- collectionview
- Today
- Total
목록iOS 응용 (swift) (681)
김종권의 iOS 앱 개발 알아가기
AssociatedObject 생명주기 AssociatedObject를 사용하면 extension에도 stored property 처럼 표현이 가능한데, ARC에 의하여 참조 카운트가 0이되면 자동으로 AssociatedObject도 사라지는것인가? AssociatedObject를 사용하여 extension에 stored property 추가 방법은 이전 포스팅 글 참고 ex) AssociatedObject extension UIScrollView { var lastOffsetY: CGFloat { get { (objc_getAssociatedObject(self, &AssociatedKeys.lastOffsetY) as? CGFloat) ?? 0.0 } set { objc_setAssociatedObj..
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 후에 실행되어야하므로 ..