🧑💻/Swift
-
RxSwift selectedSegmentIndex 연동 안되는 문제🧑💻/Swift 2021. 7. 22. 13:51
UISegmentedControl의 selectedSegmentIndex 값을 직접 변경 시 valueChanged 이벤트를 전송해야 합니다. segctrlTime.selectedSegmentIndex = 0 segctrlTime.sendActions(for: .valueChanged) ⬇️ 자세히 보기 ⬇️ UISegmentedControl의 selectedSegmentIndex 값에 따라 다른 화면을 표시해주기 위해 아래와 같이 RxCocoa를 사용해서 비동기 처리를 했습니다. /* 두번째 화면의 ViewController */ override func viewDidLoad() { super.viewDidLoad() ... segctrlTime.rx.selectedSegmentIndex .observ..
-
Autolayout vs Autoresizing Masks🧑💻/Swift 2021. 7. 16. 01:11
iOS와 macOS의 사용자 인터페이스 레이아웃은 3가지 방법으로 구성할 수 있습니다. Frame-based Layout Autoresizing Masks Auto Layout 구성 방식의 특징과 사용 방법을 알아보겠습니다. Frame-based Layout 모든 View는 위치와 크기 정보를 Frame으로 표현합니다. 처음 View의 Frame은 (20, 20, 120, 80), 두 번째 View의 Frame은 (20, 108, 120, 80)입니다. 실제 View의 Frame 값을 출력하면 다음과 같이 알 수 있습니다. 이 값을 프로그래밍 방식으로 한 땀 한 땀 계산하면 Frame-based Layout 방식이 됩니다. View에 변경 사항이 있으면 영향을 받는 나머지 View에 대해서도 다시 계산해..
-
iOS 앱 생명주기🧑💻/Swift 2021. 7. 12. 23:59
iOS 앱의 시작, 실행 중, 종료까지의 생명주기를 알아보겠습니다. 앱을 실행하면 다음과 같이 진행됩니다. 1. UIApplication 객체를 생성합니다. 2. @UIApplicationMain()가 표시된 클래스를 찾아 AppDelegate 객체를 생성합니다. @UIApplicationMain()은 프로젝트 생성 시 AppDelegate 클래스에 기본으로 추가됩니다. UIApplicationMain 함수의 4번째 delegateClassName에 "AppDelegate"라고 지정할 것을 @UIApplicationMain() Annotation 만으로 쉽게 대체할 수 있었습니다. func UIApplicationMain(_ argc: Int32, _ argv: UnsafeMutablePointer, _..
-
iOS ViewController 생명주기🧑💻/Swift 2021. 7. 12. 22:27
iOS는 Navigation Controller를 사용해 화면을 전환할 때 LIFO(Last In First Out) 방식으로 관리합니다. 스택 구조와 동일하므로 마지막으로 push 된 화면을 표시하고 제거(pop)합니다. 화면이 표시되기 전부터 제거된 후까지의 생명주기를 알아보겠습니다. 1. init ViewController 객체가 생성됩니다. 2. loadView View를 메모리에 로드합니다. 3. viewDidLoad View의 Controller가 메모리에 로드된 뒤 호출됩니다. 보통 화면이 표시되기 전 초기화하는 작업을 추가합니다. awakeFromNib nib 파일이란 Xcode가 xib와 storyboard를 컴파일한 바이너리 파일입니다. 런타임 시 View를 생성하기 위해 nib 파일을..
-
iOS AVAudioPlayer 사용하기🧑💻/Swift 2021. 6. 22. 00:58
프로그래머스의 뮤직 플레이어 앱 개발 도중 mp3 파일을 재생하기 위해 AVAudioPlayer를 사용할 기회가 생겼습니다. AVAudioPlayer는 다음 기능을 제공합니다. 파일 또는 버퍼의 모든 구간에 대해 오디오 재생 재생되는 오디오의 볼륨, 패닝, 속도 및 반복 동작 제어 재생 수준 측정 데이터에 액세스 여러 플레이어의 재생을 동기화하여 여러 사운드를 동시에 재생 먼저 AVAudioPlayer를 사용하기 위해서는 AVFoundation 프레임워크를 import 합니다. import AVFoundation AVAudioPlayer(contentsOf:) 또는 AVAudioPlayer(data:) 로 플레이어를 생성할 수 있습니다. 네트워크 상 존재하는 파일의 경우 URL로부터 Data를 추출하고 ..