본문 바로가기

iOS/스위프트로 아이폰 앱 만들기

(21)
[후기] - Do it! 스위프트로 아이폰 앱 만들기 우연히 책을 살 기회가 생겨서 이참에 아이폰 개발을 해보자고 생각했습니다. 그렇게 산 책이 이 'Do it! 스위프트로 아이폰 앱 만들기 입문'이었습니다. Review 이 책은 UIKit 사용 위주로 구성되어 있습니다. SwiftUI 사용되기 시작하는 현재로서는 UIKit만을 배우는 것은 아쉽습니다. 하지만 SwiftUI Kit의 base가 UIKit인 점, 모든 것이 SwiftUI로 해결되는 것이 아닌 점을 생각해보면 UIKit을 많이 사용하고 있는 만큼 배울 가치는 크다고 생각합니다. View에 집중되어있어서, 이 책만으로는 실제 앱을 만들기에는 조금 무리가 있을 것 같습니다. 조금 더 앱 만들기에 대한 내용으로 구성되었으면 좋을 것 같습니다. 저는 이 책을 다 보고 나서 apple SwiftUI t..
[19장] pinch gesture Pinch gesture pinch gesture는 그림의 동작과 같습니다. 두 손가락의 간격을 줄이거나 늘리는 동작입니다. Pinch gesture 등록하기 Pinch Gesture는 UIPinchGestureRecognizer로 등록할 수 있습니다. class ViewController: UIViewController { @IBOutlet var imgPinch: UIImageView! var initialFontSize: CGFloat! override func viewDidLoad() { super.viewDidLoad() let pinch = UIPinchGestureRecognizer(target: self, action: #selector(ViewController.doPinch(_:))) ..
[18장] Swipe Gesture Swipe gesture는 화면을 터치한 상태에서 손가락을 미는 동작입니다. Swipe gesture 인식하기 UISwipeGestureRecognizer를 view의 gestureRecognizer에 추가하여, swipe gesture를 인식할 수 있도록 했습니다. action으로 특정한 함수를 추가하여 swipe gesture 발생 시 수행할 동작을 추가할 수 있습니다. numberOfTouchesRequired 속성을 변경해서 스와이프에 필요한 손가락 개수도 지정할 수 있습니다. class ViewController: UIViewController { let numOfTouchs = 2 override func viewDidLoad() { super.viewDidLoad() // 손가락 1개인 경우..
[17장] Tab & Touch iOS는 사용자의 터치로 대부분의 동작을 수행합니다. 터치 이벤트를 필두로 드래그, 탭 등 다양한 동작을 수행하는데요. 이러한 이벤트를 사용하는 방법에 대해 알아보도록 하겠습니다. 탭은 모바일 화면을 손가락으로 순간적으로 누르는 것을 의미합니다. 이것은 마치 마우스로 클릭하는 것처럼 느껴집니다. 탭, 터치 이벤트 메서드 작성 touchesBegan, touchesMoved, touchesEnded는 터치 이벤트가 발생했을 때 호출되는 메서드입니다. 해당 메서드들을 override 해서 원하는 동작을 수행하도록 할 수 있습니다. override func touchesBegan(_ touches: Set, with event: UIEvent?) { let touch = touches.first! as UIT..
[16장] Core graphics Core graphics 쿼츠 라이브러리를 이용하여 가벼운 2D 렌더링 작업을 수행할 수 있는 라이브러리입니다. 경로로 그림 그리기 뿐만 아니라 안티앨리어싱 렌더링, 그라디언트, 이미지, PDF 등 의 작업에도 사용됩니다. 그림 그리기 UIGraphicsBeginImageContext, UIGraphicsEndImageContext로 bitmap-based graphic context를 추가하거나 제거합니다. context를 이용해서, 선, 사각형, 원, 호를 그리거나 도형의 색깔을 채울 수 있습니다. @IBAction func btnDrawFill(_ sender: UIButton) { UIGraphicsBeginImageContext(imgView.frame.size) let context = UIG..
[15장] Camera & Photo Library 카메라와 포토 라이브러리 앱을 사용합니다. 초기 환경 세팅 카메라와 포토 라이브러리를 사용하기 위해서는 ImagePickerController의 델리게이트 프로토콜과 MobileCoreServices 헤더 파일이 필요합니다. 그리고 UIImagePickerController 인스턴스를 생성합니다. import UIKit import MobileCoreServices class ViewController: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { let imagePicker: UIImagePickerController! = UIImagePickerController() ... 사진 촬영하기 came..
[14장] Video 13장의 소리와 마찬가지로 미디어를 재생하는 경우도 많습니다. 미디어 재생하기 비디오 재생을 위해서는 AVKit을 추가해야 합니다. AVKit은 아이폰에서 미디어 재생에 필요한 기능(영상 재생, 자막, PIP 등)에 대한 인터페이스를 제공합니다. import AVKit 미디어 파일 불러오기 로컬 파일을 불러올 수도 있고, 외부 파일을 불러올수도 있습니다. class ViewController: UIViewController { @IBAction func btnPlayInternalMovie(_ sender: UIButton) { // 내부 파일 mp4 let filePath: String? = Bundle.main.path(forResource: "FastTyping", ofType: "mp4") let..
[13장] Audio 아이폰에서 노래를 재생하거나 소리를 녹음하는 것과 같이 소리와 관련된 동작이 많이 있습니다. 오디오 사용을 위한 준비 AVFoundation을 추가하고, AVAudioPlayerDelegate를 상속받습니다. 그리고 오디오 파일로 AVAudioPlayer를 생성합니다. import AVFoundation class ViewController: UIViewController, AVAudioPlayerDelegate { var audioPlayer: AVAudioPlayer! var audioFile: URL! override func viewDidLoad() { super.viewDidLoad() audioFile = Bundle.main.url(forResource: "Sicilian_Breeze", w..