본문 바로가기

SwiftUI

[iOS] Metal - 1 사전지식Rendering(렌더링)3D 컴퓨터 그래픽에서는 여러 점을 연결해 화면에 이미지를 만듦여기서 이미지 → 렌더라고 함3D 모델을 실제 이미지처럼 보이게 하는 과정 → 렌더링 렌더링이 왜 필요할까?3D 모델은 구조, 모양만 존재 → 빛, 그림자, 색에 대한 요소 X렌더링을 통해빛을 어디에 비출지그림자가 어떻게 혹은 어디에 생기는지재질 등을 계산해서 진짜 처럼 보이게 만드는 과정→ 그냥 뼈대만 있으니 거기에 색상, 그림자를 입혀 real하게 보이게 하는 거 3D 모델?Vertex라는 정점들로 구성되어 있는 뼈대정점들을 연결하여 모양을 만들고 여기에 색, 재질, 빛 효과 등을 입혀 3D 이미지 생성 렌더링 파이프?3D 모델이 화면에 나타나기까지 거치는 모든 과정모델을 불러옴 → 정점 정보 읽어드림GPU.. 더보기
[iOS] Metal - 0 Metal?Apple에서 만든 고성능 그래픽 & 계산용 APIiOS, macOS, tvOS에서 GPU를 직접 제어할 수 있도록 해줌그래픽 렌더링뿐만 아니라, 머신러닝, 영상 처리 등에도 활용 가능 왜 Metal을 쓰나?OpenGL보다 훨씬 저수준의 접근 가능 → 더 빠르고 최적화된 렌더링iOS12 부터 OpenGL ES 권장 XmacOS에서는 아예 deprecated 처리Apple 에서는 Metal이 그래픽 개발의 표준이 됨Shader 프로그래밍(Metal Shading Language)을 통해 실시간 효과 구현 가능Swift, Objective-C에서 손쉽게 사용 가능 (애플 생태계 최적화)저수준(Low-level)?저수준 API- 시스템이나 하드웨어(GPU 등)에 더 직접적이고 세세하게 접근할 수 있.. 더보기
[iOS] SKIP.tools 사용기 SKIP.tools Install사전 설치: Xcode, Android Studio, Homebrew 도 설치가 되어있어야합니다..!저는 Android Studio만 추가적으로 설치해줬습니다 그 다음엔 brew install skiptools/skip/skipskip checkup차례로 진행하면 되는데요checkup 시, 하나라도 체크가 안 되면 다음 단계로 넘어갈 수 없어요..! 저는 안드로이드 스튜디오를 설치만하고 실행, 추가 패키지 설치를 하지 않아서 오류가 났습니다.다시 깔아주고 chekcup하면 이렇게 쫘악 체크표시가 뜬답니다. 그 다음엔위의 폼에 맞게 스킵을 실행시켜주면 됩니다.실행시켜주면..! Wow... 알아서 촤라락 나오는데요.. 코드도 예시코드들이 기본적으로 작성이 되어있습니다.그래서 .. 더보기
[iOS] SKIP.tools? Skip이란? Skip은 Swift 기반의 선언형(declarative) UI 프레임워크로, iOS와 Android 양쪽을 위한 네이티브 앱을 단일 코드베이스(Swift언어, Xcode)로 개발할 수 있게 해주는 도구  SKIP이 말하는 SKIP의 장점 진정한 네이티브 경험- Skip을 통해 생성된 앱은 iOS에서는 SwiftUI를, Android에서는 Jetpack Compose를 사용하여 완전한 네이티브 UI 제공 투명성- Skip의 라이브러리는 오픈 소스로 제공되며, 복잡한 런타임이 없어서 디버깅이 용이 경량성- SkipZero를 사용하면 iOS 앱은 추가적인 Skip 프레임워크에 의존하지 않으며, Android 앱도 최소한의 오픈 소스 라이브러리 필요 메모리 효율성- 추가적인 관리형 런타임이 없으.. 더보기
[iOS] About WidgetKit - 2(App Group) 지난번 위젯킷 블로그에서 위젯킷을 사용해 위젯을 구현하고 설정까지 완료했다고 생각했지만, 가장 중요한 부분이 남아있었습니다. 2024.10.24 - [Swfit] - [iOS] About WidgetKit - 1 바로 앱의 데이터와 위젯 데이터의 공유 문제입니다. 이번 글에서는 앱과 위젯 간의 데이터 동기화에 대해 자세히 알아보겠습니다. 현재 상태로는 위젯이 정상적으로 표시될 수는 있지만, 앱에서 데이터가 변경되었을 때 위젯에 해당 정보가 반영되지 않는 문제가 발생할 수 있습니다. 이 부분을 해결하기 위한 방법을 하나씩 살펴보겠습니다.  App GroupApp Group은 애플이 제공하는 샌드박스 환경을 기반으로 한 데이터 공유 메커니즘입니다.- Extension의 Bundle은 Container번들에 .. 더보기
[iOS] About state, binding 이번 게시글에선 SwiftUI에서 사용하는 state와 binding에 대해 알아보려합니다 SwiftUI를 사용하려면 필연적으로 만날 수밖에 없을텐데요! State- 뷰의 로컬 상태를 관리하는 속성- 뷰 내부에서 변수의 상태 변화를 관리할 때 사용- 변수 변경 시, 뷰를 다시 렌더링- 뷰가 소멸되면 state 변수도 함께 사라짐- 해당뷰에서만 직접 접근 가능- 현재 뷰에 대한 UI 특정 상태를 저장하기 위해 만들어졌기에 private 사용 Binding- 다른뷰에서 @state로 선언된 속성을 다른 뷰에서 사용할 때 사용- $를 사용하여 binding으로 선언된 변수임을 나타냄- 외부에서 접근해야하므로 private X  다음은 예시 코드입니다.struct CountView: View { @Stat.. 더보기