일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UITextView
- SWIFT
- map
- rxswift
- clean architecture
- uiscrollview
- 스위프트
- MVVM
- uitableview
- Protocol
- Clean Code
- 클린 코드
- Human interface guide
- swift documentation
- collectionview
- Refactoring
- 리펙터링
- Xcode
- Observable
- tableView
- 리팩토링
- ios
- ribs
- RxCocoa
- UICollectionView
- combine
- HIG
- 리펙토링
- swiftUI
- 애니메이션
- Today
- Total
목록2024/02 (21)
김종권의 iOS 앱 개발 알아가기
animationImages로 gif 재생 방법 animationImages는 UIImageView의 프로퍼티이고 이미지 배열을 넣어서 duration, repeatCount를 설정한 후 startAnimating()으로 실행이 가능 * animationImages 자세한 개념은 이전 포스팅 글 참고 animationImages를 알면 연속으로 재생이 가능하기 때문에 gif파일을 불러와서 frameCount와 images 배열을 얻어내는것이 목적 파일을 읽어오는 방법은 애플의 ImageIO를 사용 ImageIO 관련 자세한 내용은 이전 포스팅 글 참고 ImageIO의 CGImageSource를 사용하면 frameCount와 cgImage 가져오기가 가능 예제 - gif 재생시키기 gif 이미지 준비 im..
animationImages 개념 UIImageView가 가지고 있는 UIImage 배열 값 animationImages은 UIImageView의 프로퍼티 @available(iOS 2.0, *) open class UIImageView : UIView { public init(image: UIImage?) ... open var animationImages: [UIImage]? // default is nil } 이 값을 사용하여 여러가지의 이미지들을 animationDuration동안 aimationRepeatCount만큼 반복해서 보여주기가 가능 duration, count 옵션을 설정한 후 startAnimating()하여 이미지들을 표출 ex) animationImages에 circle이미지와 ..
UniformTypeIdentifiers 개념 파일 형식 및 데이터 유형을 식별하기 위한 표준을 의미 다양한곳에서 파일 형식을 식별하고 처리가 필요한데 일종의 규격이므로 개발자들이 파일 형식을 관리하고 다루는 데 있어서 유용한 표준 사용처 앱에서 특정 데이터 포멧을 사용할 때, info.plist에 등록하는 형태로도 사용 애플의 파일 시스템 object들을 식별할 수 있는 단위로 사용 OS단에서 파일등의 데이터들을 주고받을때 확장자 구분이 필요할 경우가 있는데, 이럴 때 UTType.으로 접근 UTType의 static 프로퍼티로 선언되어 있고, id값을 얻어오려면 아래처럼 접근 id값은 일반적으로 public prefix를 붙인 형태 share sheet에서 UTType을 활용하는 예제는 이 포스팅 글..
UINavigationController 접근 주의사항 UIViewController에서 navigationController 접근 시 viewDidLoad 시점에서는 nil임을 주의 ex) VC를 navgationViewController로 push하여 viewDidLoad시점과 viewWillAppear시점에 naviagtionController 출력 class SecondVC: UIViewController { override func viewDidLoad() { super.viewDidLoad() print("(viewDidLoad) naviVC:", navigationController) } override func viewWillAppear(_ animated: Bool) { super.vie..
Atomic 이란? 다중 스레드 프로그래밍에서 사용되는 개념 연산이 더 이상 분할되거나 중단될 수 없음을 의미 thread safe 지키는 방법 중 하나 (구체적인 개념은 이전 포스팅 글 참고) ex) 두 명의 사용자가 프린터 출력 명령 -> 각 인쇄는 중단되지 않고 한번에 실행 만약 atomic이 아닌 경우, 두 사용자의 자료를 부분적으로 인쇄되는 문제 Atomic 프로퍼티 생성 방법 NSLock을 사용 (자세한 개념은 이전 포스팅 글 참고) lock() 메소드를 사용하면 그 하위 코드들은 스레드가 하나만 접근할 수 있는 영역 주의) 가끔 아래처럼 NSLock을 상속받게끔 구현할 수 있지만, MyInt를 사용하는 쪽에서는 알아서 불필요한 NSLock의 프로퍼티들까지 인터페이스가 열리기 때문에 비추천 f..
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라고 명칭 사진을 다른앱으로 공유하기 위해서 여기서 인스타그램을 누르면 하..