swift 177

[ARKit] #6 ARKit in iOS

ARKit in iOS iOS 디바이스 카메라 모션 기능 등 우리의 앱에서 증강 현실 경험을 생성하는 방법에 대해서 알아보자. # 장치 권한 확인(Verifying Device Support and User Permission) - 앱이 ARKit을 사용할 수 있고, 사용중에 그 권한이 있는지 확인해야 한다. - ARKit은 iOS 11.0 이상 그리고 A9 프로세서 이상이 필수적임. 몇몇 ARKit 기능들은 더 특정 디바이스의 더 최신버전이 필요함. ARKit은 또한 디바이스의 카메라를 사용하고, 그래서 iOS의 privacy 권한을 유저로부터 허용받아야 함. 장치의 호환성을 우리가 다루는 방법을 ARKit을 우리가 어떻게 사용하냐에 따라 다름. - 만약 후면 카메라를 이용한 AR의 기본적인 기능만 사..

[SceneKit] #4 SCNAction

SCNAction 시작하기 전 간단정리 SceneKit에서 명시적 애니메이션: Core Animation SceneKit에서 암시적 애니메이션: SCNTransaction SCNAction은?: 그룹핑, 시퀀스, 싱글 등 조합 가능. 연결한 모든 노드의 속성을 변경하는 간단하고 재사용 가능한 애니메이션. class SCNAction : NSObject SCNNode액션 이 연결된 객체의 구조와 내용을 변경하기 위해 액션을 사용하지만 액션을 사용하여 scene에 다른 변경을 줄 수 있음. SceneKit에서 액션은 사용자 입력에 따라 자주 변경되는 애니메이션 동작을 구현하는 쉬운 방법을 제공함. # Working with Actions action을 생성하기 위해서는 action과 관련이 있는 메서드의 클..

[SceneKit] #3 Animating SceneKit Content

#3 Animating SceneKit Content 내가 만든 지오메트리들에 이벤트나 애니메이션 등도 사용할 수 있다. # Base Code 일단 기본코드는 이렇게 여기서 하나하나 추가해보자. func make_image_control() { let scene = SCNScene() arSceneView.scene = scene // 카메라 생성 let cameraNode = SCNNode() cameraNode.camera = SCNCamera() cameraNode.position = SCNVector3(x: 0, y: 0, z: 5) scene.rootNode.addChildNode(cameraNode) // Capsule 생성 및 추가 let capsuleGeometry = SCNCapsule(..

[SceneKit] #2 Geometry 다뤄보기

#2 Geometry 다뤄보기 Geometry 다뤄보기 - 들어가기 전 간단정리 - Geometry: 우리가 원하는 어떤 물체 (ex. 정육면체, 구 등) - Material: 지오메트리 표면에 어떤 효과를 주는것 (ex. 이미지 넣기, 색 넣기 등) - Node: ARSceneView화면에 Geometry를 추가할건데, Node를 통해 좌표를 주어 넣을때 사용. # SCNGeometry 클래스 material이 정의된 표면에 Scene에 표시할 수 있는 3차원 모양(model 또는 mesh라고도 부름) SceneKit에서 SCNode 객체에 연결된 지오메트리는 Scene의 Visible 요소를 구성하며, 지오메트리에 연결된 SCNMaterial 객체는 그 모양을 결정합니다. # Working with ..

[ARKit] #1 ARKit 시작하기

#1 ARKit 시작하기 VisionOS를 공부하면서 ARKit부터 차근히 쌓아야 할 것 같아서 정리합니다. # 프로젝트 환경 - Xcode 15.0 beta 3 - iOS 17.0 + - UIKit - SnapKit, RxSwift # 프로젝트 생성 SwiftUI와 UIKit중 UIKit으로 구성 UIKit 자료가 더욱 풍부하며 UIKit으로 학습해도 추후에 SwiftUI로 뷰만 래핑해서 사용하거나 혹은 SDK형태로 기능 구현을 유지한 채 SwiftUI로 UI만 다시 작성할 수 있기에 학습 측면에서 UIKit이 더 낫다는 판단. # 프로젝트 파일 설명 import UIKit import SceneKit import ARKit class ViewController: UIViewController, ARS..

[SwiftUI] EqutableView (feat. POD)

- EqutableView란?> EqutableView는 이전 값과 비교하여 새 값이 이전 값과 동일한 경우 자식 업데이트를 방지하도록 설계된 뷰입니다. `iOS 13.0+` `iPadOS 13.0+` `tvOS 13.0` `watchOS 6.0+` `visionOS 1.0+ Beta [apple-docs-EqutableView](https://developer.apple.com/documentation/swiftui/equatableview) 💡 들어가기 전.- 아래의 개념에 대한 지식이 반드시 필요함. 필요한 이유는 글 제일 아래에서 설명   - [Plain ol' Data](https://rldd.tistory.com/552)  EqutableView Usage1. 내가 EqutableView로 ..

[Swift] plain ol' data(POD)

plain ol' data(POD) 👇 애플 문서에 나와있는 설명 [apple swift docs](https://github.com/apple/swift/blob/main/docs/ABIStabilityManifesto.md#type-properties) - 어떤 데이터 타입은 단순히 데이터를 저장하고 추가적인 복사, 이동 또는 소멸 의미가 없습니다. 즉, trivial(혹은 POD)으로 알려진 이 데이터는 그들의 비트를 복제하는 것으로 copy할 수 있고, deallocation를 통해 소멸된다. 만약 모든 멤버의 타입이 trivial이라면 그것또한 또한 trivial 타입입니다. - 어떤 타입이 비트 단위로 이동가능하다 라는 것은 그것의 주소에 의존하는 어떠한 사이드 테이블의 참조도 없을 때를 의미..

[XCode] Instruments - Network

[XCode] Instruments - Network 내가 사용하는 앱이 네트워크 통신에 있어서 어떤 Request와 Response를 처리하는지 체크하기 위해서 이 방법을 사용할 수 있습니다. 1. Xcode의 좌측의 이미지에서 삼각형 버튼을 꾹 누르면 우측의 메뉴팝업이 나타나고 오른쪽 이미지와 같이 바꿔줍니다. 2. Network를 선택합니다. 3. 기록을 실행합니다. 기록하기 시작하면 위와같은 이미지가 나타납니다. 4. 내가 확인하고자 하는 부분을 선택합니다. - 이미지 좌측 상단에 List: HTTP Transaction으로 세팅한 화면입니다. 5. 응답과 결과를 확인할 수 있습니다. 직접 사용해보시면 더욱 자세한 정보를 알 수 있습니다.

[Swift] 커링(Currying)

# Currying 함수형 프로그래밍을 위한 Currying 학습. # 계기 - SwiftUI를 사용하여 View를 모듈화를 시도. - 더 잘 만들기 위해 함수형 프로그래밍의 해당 개념에 대한 학습이 필요하다고 느낌. # 목표 - 간단한 덧셈 구현 (Level 1) - 정규표현식 구현 (Level 2) - Reduce, Map, Filter 구현 - FlatMap, CompactMap 구현 (⚠️ 실패한 구현) : 기록하기 위해서 적어둠. # 참고에서는 UI와 관련한 클로저를 함수형으로 받아서 간결하게 처리하는 예제도 있으니 확인하면 좋음. ❗️ 실패한 구현인 이유 : 결과값이 다르게 나타남. # 파일 # 간단한 덧셈 구현 (Level 1) import Foundation public class LEVE..