본문 바로가기

전체 글

(77)
[후기] - 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..
[12장] Table View Table View 데이터를 목록 형태로 보여줄 수 있습니다. 목록의 항목을 선택하면 세부 정보를 확인할 수 있고 추가적인 동작을 수행할 수 있습니다. 아래와 같이 연락처와 설정 등 다양한 곳에서 Table View는 사용되고 있습니다. Table View Controller Table View는 Table View Controller를 추가해서 사용할 수 있습니다. Table 목록 보여 주기 section 개수와 section 안에 아이템 개수를 정하고 보일 데이터를 지정해줍니다. var items = ["책 구매", "철수와 약속", "스터디 준비하기"] var itemsImageFile = ["cart.png", "clock.png", "pencil.png"] class TableViewContro..
[11장] Navigation Navigation Controller 앱에서는 화면 이동이 매우 많습니다. tab bar와는 다르게 화면 간 연관성이 많고 데이터를 주고받아야 할 경우도 있습니다. Navigation Controller를 이용하면 화면간의 데이터를 주고받을 수 있습니다. Navigation Controller 추가하기 메뉴에서 [Editor > Embed in > Navigation Controller]를 선택하면 Navigation Controller가 추가됩니다. 화면 이동 추가하기 스토리보드에서 button을 우클릭 드래그해서 다른 뷰 컨트롤러에 놓아 show segue를 추가합니다. 뷰 전환 시 데이터 전달하기(뷰를 push할 때) 데이터를 전달하고자하는 view에는 받는 변수를 생성합니다. class Edit..