DispatchQueue는 앱의 메인 스레드 또는 백그라운드 스레드에서 작업을 직렬 또는 병렬로 실행을 관리하는 오브젝트입니다. DispatchQueue는 DispatchObject를 상속하고 있는 클래스입니다. DispatchObject는 OS_object를 상속하고 있으며 많은 디스패치 오브젝트 타입을 가집니다. 예를 들어 DispatchQueue, DispatchGroup, DispatchSource등이 있습니다. 또한 기본적인 디스패치 오브젝트 인터페이스를 사용하면 메모리 관리, 실행, 일시중지 및 재실행 등을 수행할 수 있습니다. 디스패치 큐는 앱이 블록 개체 형태로 작업을 제출할 수 있는 FIFO 큐입니다. 디스패치 큐는 작업을 순차적serially으로 또는 동시 concurrently에 실행..
내비게이션 바 색상을 변경하는 건데 정리하는 김에 내비게이션 바에 대해서 간단하게 살펴보려 합니다. 내비게이션 바는 내비게이션 컨트롤러와 함께 화면 상단 바에 표시됩니다. 클래스로 정의되어 있습니다. UINavigationBar 객체는 일반적으로 상단에 표시되는 바로, 계층 내에서 탐색하기 위한 버튼을 포함합니다. 기본 구성은 왼쪽 버튼(뒤로가기), 가운데 제목 그리고 오른쪽 버튼으로(옵셔널) 구성됩니다. 내비게이션 바 개념만 살짝보고 나중에 따로 정리하기로 하고,, 오늘은 네비게이션바의 색상 변경하기 결론적으로 아래와 같은 내비게이션 바를 만들고 싶을 때 iOS 개발자 공식문서를 살펴봅니다. 참 잘 적혀있어. 바의 외관을 변경하고 싶으니 NavicationBar을 검색하고 스크롤을 쭉쭉 내려 Custo..
이미지뷰의 ContentMode에 대해서 살펴보겠습니다. 이미지뷰의 ContentMode는 enum으로 정의되어있습니다. 저는 여기서 위에 3개만 자주 사용해서 밑에 것은 사용하지 않아 잘 몰랐는데 한번 차이점을 파악하려고 합니다. 위에서부터 차례대로 차이점을 살펴봅시다. (UIImageView배경은 검은색으로 설정했습니다.) (파란색 프레임은 UIImageView의 프레임입니다.) scaleToFill 이미지의 높이와 너비는 UIImageView의 크기와 일치하도록 늘어납니다. AspectFit 이미지의 가장 긴쪽(높이 또는 너비)은 뷰와 일치하도록 늘어납니다. 이렇게 하면 전체 이미지를 표시하면서 높이나 너비를 왜곡시키지 않으면서 가능한 한 이미지를 크게 만듭니다. AspectFill 이미지의 가장 ..
앱 라이프 사이클에 대해서 정리해보자. 앱 라이프 사이클에는 5가지 상태가 존재합니다. - Not running Application이 아직 시작되지 않았거나 실행 중이었는데 시스템에 의해 종료된 상태입니다. - Inactive Application이 Foreground에서 실행중이지만 어떠한 이벤트를 수신하지 않는 상태입니다. UIEvent를 받지 않으므로 앱과 상호작용 할 수 없습니다. 전화 또는 메시지가 수신될 때 발생할 수 있습니다. - Active Application이 Foregroun에서 실행중이며 이벤트를 수신하는 상태입니다. UIEvent를 받으므로 앱과 상호작용이 가능합니다. - Background Application이 Background에서 실행중이고 코드가 실행 중입니다. - Su..
뷰 컨트롤러의 생명주기에 대해서 알아봅시다. viewDidLoad() 메모리에 로드된 후 호출됩니다. 딱 한번 실행됩니다. (딱 한 번만 실행되기 때문에 초기화면을 구성할 때 사용합니다.) 뷰 컨트롤러에 의해 자동으로 호출됩니다. 메모리 워닝에 의해 view가 없어지지 않는 한 다시 호출되지 않습니다. 뷰 컨트롤러의 사이클은 위 이미지와 같이 이루어집니다. - viewWillAppear - viewDidAppear - viewWillDisappear - viewDidDisappear viewWillAppear() 뷰 계층에 추가될 예정임을 알립니다. 뷰 컨트롤러가 나타나기 직전에 실행됩니다. 뷰 컨트롤러가 나타날 때마다 실행됩니다. viewDidAppear() 뷰 계층에 추가되었을 때 호출됩니다. vie..
Q delegate는 왜 Weak로 선언할까요? A Retain cycle 을 피하기 위해서! 기본적으로 클래스의 객체를 가리키는 각각의 reference는 강함 참조(strong)입니다.두 클래스 인스턴스가 서로 강한 참조를 하게 되면 그것이 Retain Cycle이 됩니다. 서로 강한 참조를 하고 있으면 사용하지 않는데도 deinit 되지 않습니다. 만약에 객체에 대한 강한 참조가 존재하지 않는다면 메모리에서 자동으로 해제됩니다.weak로 선언한다면 강한 참조가 되지 않아 객체의 메모리가 해제되면 자동으로 nil이 될 것입니다. Retain Cycle은 delegate에서는 흔하게 발생합니다. 그래서 delegate를 사용할 땐 대부분의 상황에 weak로 선언합니다.UITableViewDelegate..
애니메이션 옵션들 중 자주 사용하는 것들curveLinearcurveEaseIncurveEaseOutcurveEaseInOut // https://developer.apple.com/documentation/uikit/uiview/animationoptions에 살펴보면 더 많은 옵션들이 나와 있습니다. curveLinear 애니메이션 커브는 애니메이션이 지속되는 동안 균등하게 애니메이션을 발생시킵니다. curveEaseIn 애니메이션이 느리게 시작된 다음 애니메이션 진행 속도가 점점 빨라집니다. curveEaseOut 애니메이션이 빠르게 시작되고 완료되면 느려집니다. curveEastInOut 애니메이션을 느리게 시작하고 빠르게 가속화 한 다음 애니메이션이 완료되기 전에 느리게 합니다. 속도 그래프
사용할 CGAffineTransform는 구조체입니다. (https://developer.apple.com/documentation/coregraphics/cgaffinetransform) 가장 큰 특징은 뷰의 프레임을 계산하지 않고 CGAffineTransform을 사용해 2D 그래픽을 그릴 수 있습니다. 간단하게 사용 가능하기 때문에 자주 사용하곤 합니다. CGAffineTransform에서 사용되는 아핀 변환 행렬은 2D 그래픽을 그리는데 사용되는 행렬입니다. 또한 아핀 변환 행렬은 객체를 회전, 크기 조절, 변환 또는 기울기를 위해 사용됩니다. 아핀 변환을 직접 생성할 필요는 없고 구조체에 있는 함수를 호출해 뷰를 이동(translate), 조절(scale), 회전(rotate)합니다. Scale..
- Total
- Today
- Yesterday
- ARC
- 알고리즘
- Xcode
- ios
- RX
- 스위프트
- string
- 책 추천
- 책 후기
- 독서
- 머신러닝
- rxswift
- 스위프트UI
- stanford SwiftUI
- swift5
- wwdc
- ReactiveX
- iOS SwiftUI
- 딥러닝
- Animation
- Deep learning
- SWIFT
- swiftUI
- 애니메이션
- objective-c
- leetcode
- 책
- 문자열
- Algorithm
- objc
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |