스와이프 제스처 앱 만들기 페이지를 넘길때, 항목을 삭제할 때 등 많은 작업이 스와이프 제스처를 통해 이루어 지고 있습니다. 이번에는 스와이프 제스처를 등록하고 사용하는 방법 및 한 손가락과 두 손가락을 이용한 제스처 활용 방법에 대해 공부합니다. 스와이프란? 손가락으로 화면을 상하 좌우로 미는 동작이 ‘스와이프’ 제스처 입니다. 문서 편집기 앱과 페이지를 넘기는 등 다양한 앱에서 사용되어 집니다. 한손가락 뿐만 아니라 여러 손가락을 활용한 스와이프도 가능합니다. 결과 화면 스토리 보드 ViewController.swift (메인화면) // // ViewController.swift // SwipeGesture // // Created by HwangSeungyeon on 2020/09/23. // im..
Type Casting(타입 캐스팅) 사용법 & 예제 Type Casting(타입 캐스팅) 이란? 인스턴스의 타입을 확인 하거나, 인스턴스의 타입을 슈퍼 클래스 혹은 서브 클래스타입처럼 다루기 위해 사용합니다. Swift에서의 타입 캐스팅은 ‘is’ 와 ’as’ 라는 연산자로 구현할 수 있으며, 이 두 연산자는 값의 타입을 확인하거나 다른 타입으로 변환하는 간단한 방법을 제공합니다. 사용 예제 Defining a Class Hierarchy for Type Casting [예제1] 타입 캐스팅을 활용하여 특정 클래스 인스턴스의 타입을 확인 class Person { var name: String //초기값이 업으므로 init 만들어준다 init(name: String) { self.name = name ..
CustomStringConvertible 사용법 & 예제 CustomStringConvertible란? 공식문서에는 CustomStringConvertible는 텍스트적인 표현을 커스터마이즈 하는 타입이라고 적혀있다. 사용 예제 그냥 구조체를 출력하면 기본 표현으로 출력된다 struct Point { let x: Int let y: Int } let p = Point(x: 21, y: 30) print(p) //Point(x: 21, y: 30) CustomStringConvertible 프로토콜을 정의하면, 사용자가 정의한 형태로 출력되는 것을 확인 가능 extension Point: CustomStringConvertible { var description: String { return "(\(x)..
문법 최적화(Syntax Optimization)_Closures 사용법 & 예제 Syntax Optimization 란? 기본적으로 구현되어 있는 메소드를 사용할때(Closure) 스위프트는 단순하게 작성된 코드를 선호한다. 문법 최적화 하여 클로저 작성시 5가지 규칙이 있습니다. 1. 이미 구현되어 있는 메소드 사용한다면 파라미터 형식, 리턴 형식 생략 가능 2. 파라미터 이름, in 생략 -> Shorthand Argument Name (ex) $0, $1, $n로 대체 3. 클로저에 포함된 코드가 단일 return 이라면 return 생략(implicit return) 4. 클로저가 마지막 파라미터라면 in line -> Trailing Closure() 뒤에 5. 괄호에 파라미터 없으면 괄호 생..
카메라와 포토 라이브러리 App 구현 IOS에서 제공하는 UIImagePickerController 클래스를 사용하여 카메라와 포토 라이브러리를 구현하고 카메라를 이용하여 사진이나 비디오를 촬영하고 포토 라이브러리에 저장하는 것이 가능한 App을 구현하도록 하겠습니다. 결과 화면 스토리 보드 ViewController.swift (메인화면 - Audio / Record) // // ViewController.swift // CameraPhotoLibrary // // Created by HwangSeungyeon on 2020/09/17. // import UIKit import MobileCoreServices //다양한 헤더파일을 정의해 놓은 헤더 파일 class ViewController: UIVi..
큐 ( Queue )_자료구조(DataStructure_Swift) 큐 (Queue) 구현 아래와 같은 총 4가지의 큐를 구현할 예정입니다. 각각의 여러 방법에는 ‘성능 차이’ 가 있습니다만 여러 큐를 구현하며 똑같은 큐를 구현하되, 빠르고 효율적으로 구현하자는 취지입니다. 1. Array를 이용한 큐 구현 2. Doubly Linked List 이용한 큐 구현 3. Two Stack을 이용한 큐 구현 4. Ring Buffer를 이용한 큐 구현 Double Stack 이란? (위의 4가지 방법 중 가장 성능이 좋음) 더블 스택은 두개의 스택으로 큐를 구현하는 아이디어 입니다. 스택은 배열(Array)로 구현했었습니다 더블 스택은 배열의 마지막 요소를 제거하는 연산은 재정렬이 필요하지 않으므로 수행속도가..
비디오(Video) 재생 App 구현하기 이번에는 아이폰 앱에서 비디오를 재생하는 앱을 만들어 보겠습니다. 애플 IOS에서 제공하는 AVPlayerViewController를 사용하여 1. 앱 내부에 저장되어있는 파일 / 2. 외부 링크 비디오 파일도 재생 가능합니다. 결과 화면 [ 앱 내부의 Video File ] [ 앱 외부의 Video File ] 스토리 보드 ViewController.swift (메인화면 - Audio / Record) // // ViewController.swift // MoviePlayer // // Created by HwangSeungyeon on 2020/09/15. // Copyright © 2020 HwangSeungyeon. All rights reserved. /..
음악 재생 및 녹음 App 구현하기 이번에는 AVAudioPlayer를 이용해서 오디오 파일 재생, 일시 정지 및 정지하는 방법과 볼륨을 조절, 녹음하는 App을 구현 하였습니다. 결과 화면 [ Audio Player ] [ Recorder ] 스토리 보드 ViewController.swift (메인화면 - Audio / Record) // // ViewController.swift // Audio // // Created by HwangSeungyeon on 2020/09/04. // Copyright © 2020 HwangSeungyeon. All rights reserved. // import UIKit import AVFoundation // 오디오 재생을 위한 헤더 파일 class ViewCon..
큐 ( Queue )_자료구조(DataStructure_Swift) Doubly Linked List 이용한 큐 (Queue) 구현 아래와 같은 총 4가지의 큐를 구현할 예정입니다. 각각의 여러 방법에는 ‘성능 차이’ 가 있습니다만 여러 큐를 구현하며 똑같은 큐를 구현하되, 빠르고 효율적으로 구현하자는 취지입니다. 1. Array를 이용한 큐 구현 2. Doubly Linked List 이용한 큐 구현 3. Two Stack을 이용한 큐 구현 4. Ring Buffer를 이용한 큐 구현 연결 리스트가 가지는 기본적인 Node 클래스 public class Node { public var value: T // 값 public var next: Node? // 다음 노드 참조 public var previo..
Method and Subscript 사용법 & 예제 [2/2] Subscript란? 클래스, 구조 그리고 열거형은 서브스크립트를 정의할 수 있는데 컬렉션, 리스트 또는 순열의 멤버 항목에 접근하기 위한 단축키임. 서브스크립트를 사용하여 설정과 검색을 위해 메소드를 나눌 필요 없이 인덱스로 값을 설정하고 검색함. 예를 들어 someArray[index]로 배열 인스턴스 항목과 someDictionary[key]로 딕셔너리 인스턴스 항목을 접근할 수 있음. 파라미터의 형식과 수에는 제한이 없으나 많아야 2개가 일반적 가변 파라미터 가능, 파라미터의 기본값 지정 불가능 값을 받아야 하기 때문에 리턴형 생략 불가능 get은 필수, set은 생략 가능 subscript(parameters) -> R..
Method and Subscript 사용법 & 예제 [1/2] 인스턴스(Instance) 메서드란? 인스턴스 메서드는 특정 타입의 인스턴스에 속한 함수를 뜻 합니다. 문법은 함수와 동일하고 차이점은 인스턴스를 통해 호출 한다는 것과 구현하는 위치 입니다. 함수는 특정형식에 연관 되지 않은 동작, 메소드는 특정 형식과 연관된 동작 func name(parameters) -> ReturnType { Code } instance.method(parameters) 사용 예제 클래스로 구현한 인스턴스 class Sample { var data = 0 static var sharedData = 123 func doSomething() { print(data) Sample.sharedData //Static 값에 ..
큐 ( Queue )_자료구조(DataStructure_Swift) 큐(Queue)란 무엇인가? 사람들이 음식점에 줄을 서고 있는 모습을 상상해보자, 먼저 줄은 선 사람이 먼저 가게에 들어갈 수 있다. 이러한 상황은 일상생활에서 자주 발생되는데 이러한 현상을 컴퓨터로 표한한 것이 ‘큐(Queue)’ 이다. 큐(Queue)의 특징 ‘먼저 온 순서대로 먼저 작업을 해 준다. First - In - First - Out (FIFO) 이라고 부르기도 한다. 즉 큐는 FIFO 특성을 가진 자료 구조이다. 큐 (Queue) 구현 아래와 같은 총 4가지의 큐를 구현할 예정입니다. 각각의 여러 방법에는 ‘성능 차이’ 가 있습니다만 여러 큐를 구현하며 똑같은 큐를 구현하되, 빠르고 효율적으로 구현하자는 취지입니다. 1...