Danny의 iOS 컨닝페이퍼
반응형
article thumbnail
[iOS/Swift] UINavigationController 살펴보기
UIKit/Swift 2023. 2. 6. 18:15

UINavigationController의 동작 방식 내비게이션 컨트롤러란 계층으로 구성된 스택 기반의 뷰 컨트롤러입니다. 아이폰 유저라면 이미 모두 한 번쯤은 이미 사용해 봤을 거예요. 그림을 보며 동작방식을 이해를 해봅시다. 처음 보이는 [Setting 컨트롤러]는 Root View 컨트롤러입니다. [Setting 컨트롤러]에서 General을 선택하면, 대리자를 통하여 재정의한 push 동작에 의해 새로운 [General 뷰 컨트롤러]를 생성하고 [Setting 뷰 컨트롤러] 위에다 쌓는 형식이죠. 스택을 어떻게 쌓는지 간단히 알아봅시다. (push or show) 내비게이션 스택은 순서가 필요하니 배열을 사용합니다. 배열 viewControllers내부에 뷰 컨트롤러들을 저장하죠. 내비게이션 스택..

article thumbnail
[iOS/Swift] 상태창(StatusBar) 색상 변경 방법 (시계, 배터리...색)
UIKit/Cheat Sheet 2023. 2. 5. 01:55

상태창(StatusBar) 색상 변경 방법 1. Project --> General --> Deployment Info 찾아가기 2. Status Bar Style을 원하는 색상으로 선택 Dark Content : 검은색으로 표시됨 Light Content : 흰색으로 표시됨 3. Info.plist 설정하기 View controller-based status bar appearance를 추가한 뒤, Value값을 No로 설정하기 코드로 변경하는 방법 View controller-based status bar appearance의 기본값은 YES를 갖고 있습니다. 그러므로 만약, Info.plist에서 생성을 해줬다면, 값을 YES로 변경하거나 제거해 주세요. ViewController에서 preferr..

article thumbnail
[iOS/Swift] 동시성(Concurrency) 프로그래밍
Xcode/Swift 문법 2023. 2. 4. 01:09

동시성(Concurrency) 프로그래밍 만약 하나의 쓰레드에서 여러 작업(Task)을 실행하게 된다면 속도 및 성능 저하와 같은 문제가 발생하게 될 거예요. 간단한 예시로 Swift는 화면을 그릴 때(화면을 업데이트할 때) 메인 쓰레드에서 작업을 하게 됩니다. 그러면 메인 쓰레드 쪽에 작업이 많이 쌓여 있다면 화면 업데이트하는데 문제가 생기겠죠?! 이것을 해결하기 위해 나온 게 동시성입니다. 다른 쓰레드로 뿌려줘서 메인 쓰레드의 일을 분산시켜 주는 거죠. 위의 그림과 같이 작업(Task)을 큐(Queue)로 보내주기만 하면 OS(운영체제)에서 자동으로 다른 쓰레드로 분산시켜 줍니다. 우리는 작업을 효율적으로 하기 위해선 어떤 큐(Queue)를 사용할지 고민만 하면 됩니다. 큐(Queue)의 종류 Dis..

article thumbnail
[iOS/Swift] 형 변환 (Type Casting)
Xcode/Swift 문법 2023. 1. 31. 02:38

형 변환 (Type Casting) Swift에서 타입 캐스팅은 is 및 as연산자로 나눠줄 수 있습니다. is 연산자를 통하여 인스턴스에 대한 타입을 확인을 할 수가 있고 as 연산자는 클래스의 계층구조(Superclass나 Subclass)에서 변환할 타입의 인스턴스로 리턴합니다. 또한, 타입 캐스팅을 이용하여 특정 프로토콜을 따르는지 확인할 수도 있습니다. is 연산자 - Type Checking 간단히 영어 표현식으로 생각해 보면 "is"는 "~은 ~이다"라고 사용이 되죠? 영어를 읽는다 생각하고 아래 예제를 읽어보면 사용방법이 확 이해가 가실 거예요. var score: Int = 100 score is Int "score" 는 "Int" 타입이다. // true score is Double "..

article thumbnail
[iOS/Swift] AsyncStream / AsyncThrowingStream
Xcode/Swift 문법 2023. 1. 26. 20:40

Stream이란? 스트림(Stream)이란 데이터의 흐름을 의미합니다. 이러한 데이터 흐름은 단방향이며, 한번에 일부 데이터를 처리합니다. 즉, 데이터를 한번에 모두 처리하지 않고, 데이터가 하나씩 또는 여러 개씩 일정한 간격으로 생성되어 이를 연속적으로 처리하는 방식입니다. 스트림은 많은 데이터를 처리하는 경우 유용하며, 여러 개의 데이터를 처리할 때 코드의 가독성과 유지보수성이 좋아집니다. 스트림은 실시간으로 데이터를 처리하고, 데이터가 발생하는 즉시 처리할 수 있어 대규모 데이터 처리에 유용합니다. AsyncStream이란? 순서가 있고, 비동기적으로 생성된 요소들의 Sequence입니다. 클로저 내부에서 하고 싶은 일을 정의할 수 있습니다. 기존의 Sequence를 생성하려면 IteratorPro..

article thumbnail
[iOS/Swift] 프로토콜 AsyncSequence (비동기 시퀀스)
Xcode/Swift 문법 2023. 1. 20. 01:58

AsyncSequence 란 기존의 Sequence는 한 번에 하나씩, 단계별(step)로 진행할 수 있는 값 목록(list of values)입니다. 여기에 비동기성을 추가한 것이 바로 AsyncSequence입니다. 내부 구현부 먼저 AsyncSequence 내부를 살펴봅시다. @available(macOS 10.15, iOS 13.0, watchOS 6.0, tvOS 13.0, *) @rethrows public protocol AsyncSequence { // AsyncIterator는 반복을 위해 AsyncIteratorProtocol을 구현해줘야 하네요. associatedtype AsyncIterator : AsyncIteratorProtocol // 사용할 요소의 타입을 정해줄 수 있는 것..

article thumbnail
[iOS/Swift] 프로토콜 Sequence
Xcode/Swift 문법 2023. 1. 19. 01:34

Sequence란? 순차적이고 반복적인 동작을 할 수 있게 만드는 프로토콜입니다. 즉, 순차적인 나열이죠. 선언 protocol Sequence 개요 설명은 공식문서 기반으로 할 예정이므로 자세한 내용을 알고 싶다면 공식문서 를 참고해 주세요. Sequence는 한 번에 하나씩 단계별(step)로 진행할 수 있는 값의 목록(list of values)입니다. 이 Sequence의 요소를 반복하는 가장 일반적인 방법은 for문(for-in loop)을 사용하는 것입니다. let oneTwoThree = 1...3 for number in oneTwoThree { print(number) } // Prints "1" // Prints "2" // Prints "3" 특정 값을 포함하고 있는지 확인을 위해 f..

article thumbnail
[iOS/Swift] AssociatedTypes (프로토콜을 위한 Generic문법)
Xcode/Swift 문법 2023. 1. 13. 02:03

Associated Types (관련 타입) 자 일단 공식문서 부터 보고 가시죠 When defining a protocol, it’s sometimes useful to declare one or more associated types as part of the protocol’s definition. An associated type gives a placeholder name to a type that’s used as part of the protocol. The actual type to use for that associated type isn’t specified until the protocol is adopted. Associated types are specified with the a..

article thumbnail
[iOS/Swift] 프로토콜 Equatable (타입 비교)
Xcode/Swift 문법 2023. 1. 12. 20:33

Equatable Equatable은 비교를 할 수 있는 프로토콜입니다. Equatable의 정의를 한 번 봅시다. public protocol Equatable { /// Returns a Boolean value indicating whether two values are equal. /// /// Equality is the inverse of inequality. For any values `a` and `b`, /// `a == b` implies that `a != b` is `false`. /// /// - Parameters: /// - lhs: A value to compare. /// - rhs: Another value to compare. static func == (lhs: Sel..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (5) - 이미지를 인식하고 그 위에 동영상을 재생시켜 보자
Xcode/Framework 2023. 1. 11. 15:05

시작 해리포터에서 나오는 신문을 다들 기억하시나요? 오늘 만들어 볼 것은 신문이나 책 위의 이미지를 인식하여 마치 해리포터에서 나오는 신문 같이 인식된 이미지 위에 동영상을 재생시키는 앱을 만들어 보려 합니다. 여기에서 사용되는 기술은 3D 공간에서 이미지를 인식을 하고 객체를 만들어내는 SceneKit이 사용되며 또한 2D로 된 비디오 장면을 추가하기 위해 따로 SpriteKit도 사용이 됩니다. 간단히 설명할 예정이라 자세한 내용은 이전 글을 참고하시길 바랍니다. SceneKit의 사용법 (1) - 정육면체와 달을 만들어 보자 SceneKit의 사용법 (2) - 주사위 만들기 SceneKit의 사용법 (3) - 카메라 줄자, 거리 측정하기 SceneKit의 사용법 (4) - 이미지를 인식하여 3D형상..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (4) - 이미지를 인식하여 3D형상 만들기
Xcode/Framework 2023. 1. 11. 00:36

시작 오늘은 SceneKit으로 이미지를 인식하여 그 위에 캐릭터를 올려볼 예정입니다. 간단히 설명할 예정이라 자세한 내용은 이전 글을 참고하시길 바랍니다. SceneKit의 사용법 (1) - 정육면체와 달을 만들어 보자 SceneKit의 사용법 (2) - 주사위 만들기 SceneKit의 사용법 (3) - 카메라 줄자, 거리 측정하기 준비물 1. 이미지를 인식할 수 있는 스티커 or 카드 2. 스티커 모양에 맞는 3D 모델을 다운로드 3D 모델 다운로드하는 사이트들 https://www.turbosquid.com/ko/ https://free3d.com/3d-models/ https://sketchfab.com/feed 위에서 원하는 모델을 다운로드합니다. 모델의 파일 확장자는 dae, obj 둘 중 하..

article thumbnail
[iOS/Swift] Info.plist contained no UIScene configuration dictionary 에러발생 시 해결 방법
Etc. 2023. 1. 10. 17:10

Info.plist 에러 [SceneConfiguration] Info.plist contained no UIScene configuration dictionary (looking for configuration named "(no name)") 이와 같은, 에러 발생 시 info.plist의 Application Scene Manifest에서 Scene Configuration을 추가시켜 줍니다.

article thumbnail
[iOS/Swift] UIKit에서 스토리보드 없이 코드로 작성 시 SwiftUI의 캔버스(미리보기, Preview)를 적용하는 방법
UIKit/Cheat Sheet 2023. 1. 10. 16:03

사용방법 Preview를 보고 싶은 곳에서 아래 코드를 사용합니다. makeUIViewController(context: Context) 내부에서 이름을 Preview를 보고 싶은 ViewController 이름으로 변경해 주시면 됩니다. #if DEBUG import SwiftUI struct Preview: UIViewControllerRepresentable { // 여기 ViewController를 변경해주세요 func makeUIViewController(context: Context) -> UIViewController { ViewController() } func updateUIViewController(_ uiView: UIViewController,context: Context) { //..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (3) - 카메라 줄자, 거리 측정하기
Xcode/Framework 2023. 1. 10. 00:03

시작 오늘은 SceneKit으로 카메라를 통한 줄자를 만들어 보겠습니다. 간단히 설명할 예정이라 자세한 내용은 이전 글을 참고하시길 바랍니다. SceneKit의 사용법 (1) - 정육면체와 달을 만들어 보자 SceneKit의 사용법 (2) - 주사위 만들기 화면의 위치 얻기 touchesBegan 메서드를 통하여 터치한 화면(2D 공간)에서 실제 카메라에 비치는(3D 공간) 좌표를 구해봅시다. raycastQuery를 통하여 터치 시 그 공간 좌표정보를 요청한 뒤, raycast로 만든 쿼리값(좌표정보 요청)을 넣어준 뒤 결괏값으로 변환시켜서 좌표 정보를 얻을 수 있습니다. override func touchesBegan(_ touches: Set, with event: UIEvent?) { resetD..

article thumbnail
[iOS/Swift] SceneKit의 사용법 (2) - 주사위 만들기
Xcode/Framework 2023. 1. 8. 16:57

시작 오늘은 SceneKit으로 주사위 생성 및 굴리기를 해봅시다. 순서는 이전에 만든 Cube와 달 만들기와 거의 동일하니 못 보셨다면 여기를 참고하세요. 바로 시작하겠습니다. 주사위로 사용할 모델 다운 받기 모델을 모아둔 홈페이지입니다. (유료, 무료) 검색을 통하여 원하는 모델 검색 → Formats에서 확장자 .dae(Collada) 선택 -> 다운로드 시 Collada폴더만 다운로드하면 됩니다 dae파일은 ScencKit과 호환이 되며 실제 scn파일로 변환이 가능합니다. 3D Models for Professionals :: TurboSquid Buy 3D models for your project from our vast online catalog of cars, people, texture..

반응형