iOS
-
Preference (PreferenceKey)iOS 2024. 11. 24. 20:36
1. Preference 란상위 뷰에서 하위 뷰로 전달하는 환경 변수(Environment)와 달리하위 뷰에서 구성된 정보를 상위 뷰 (Container)로 전달할 때 사용합니다.애플 문서의 그림이 해당 내용을 잘 표현해 주고 있는 것 같습니다. Environment 는 여러 하위 뷰로 동시에 전달되지만 (flows down)Preference는 하나의 단일 값으로 상위 뷰에 전달 됩니다. 따라서 어떻게 합쳐질지 결정해야 합니다. (flowing up) 2. 사용2.1 ModifiernavigationTitle 처럼 이미 Preference를 이용해 만들어져 있는 많은 Modifier 들이 존재합니다.navigationTitle를 사용하는 예시를 보면, NavigationView 내부 컨텐츠인 VSta..
-
[MTL] MTLTextureiOS/Metal 2024. 8. 20. 19:38
A resource that holds formatted image data. 'GPU에서 처리할 수 있도록 정제된 이미지 정보를 갖고 있는 자원'을 추상화시켜 놓은 객체입니다. 이 프로토콜을 직접 구현하지 말고 주어진 instance 생성 메서드들을 이용해서 생성해야 합니다 !Don’t implement this protocol yourself; instead, use one of the following methods to create a MTLTexture instance 1. MTLTextureDescriptor 이용하기descriptor to textureMTLTextureDescriptor를 만들고 MTLDevice의 makeTexture(descriptor:) 를 사용해 texture를 생성..
-
[iOS] OSSignpost > 특정 작업의 duration 측정하기iOS 2024. 7. 1. 20:41
앱의 성능을 측정해 보려고 합니다.그 중에서도 특정 작업이 완료되기까지 시간이 얼마나 걸렸는지를 측정해 보려고 합니다.주로 네트워크 통신이나 이미지 랜더링 같은 작업이 오래 걸리는 시간을 측정해볼 때 유용하게 사용될 수 있을 것 같습니다.# OSSignposterSignposts allow you to record meaningful information about the duration of your app’s tasks using the same subsystems and categories that you use for logging.Signposts는 특정 작업의 응답 시간을 측정하는 도구입니다.아이디어는 시작과 끝에 트리거를 주고 얼마나 걸렸는지 체크하는 것입니다.그리고 이걸 instrument..
-
이미지의 크기를 줄인다. 리사이징 ? 압축 ? 해상도? 품질?iOS 2024. 5. 10. 01:44
앞서 픽셀의 개념과 함께 고해상도는 무엇인지에 대해 이해했습니다. 하지만 항상 고해상도의 이미지가 좋기만 한 것은 아닙니다. 세상에 공짜는 없기 때문에 고해상도의 많은 픽셀을 저장하려면 그만큼 많은 공간이 필요합니다. 당연히 처리하는 시간도 오래 걸릴 것입니다. 아주 작은 영역이라면 그렇게까지 필요하지 않은데도 말이죠. 그래서 개발을 하다보면 이미지의 크기를 줄여야 하는 경우가 생깁니다. 이미지의 크기. 어떻게 줄일 수 있을까요? 방법은 크게 2가지가 떠오릅니다. 픽셀 자체를 버리거나, 저장할 때 최대한 최적화를 시켜야 할 것입니다. 픽셀 자체를 버리는 것을 리사이징 (Resizing) 해상도는 유지하면서 저장 방식을 바꾸거나 데이터를 최적화하는 것을 압축 (Compression) 이라고 합니다.리사이징..
-
pixel 과 points, dp의 관계 그리고 UIImageiOS 2024. 5. 10. 01:05
픽셀이란?픽셀 (Pixel)은 가장 작은 단위의 디스플레이 요소입니다. 흔히 "화소"라고도 불립니다. 픽셀은 RGB 색상을 조합해서 색을 표현합니다. 즉 Red, Green, Blue 에 대한 값을 저장합니다. 각 색을 채널이라고 한다면, 한 채널은 0~255까지의 값을 가질 수 있어서 2^8개의 값을 표현할 수 있습니다. 따라서 한 픽셀은 256 x 256 x 256 = 16,777,216 가지의 색상을 생성할 수 있다는 걸 의미합니다. 이를 트루 컬러 시스템 (True Color system) 으로 부릅니다. 해상도 = 가로 x 세로 픽셀의 총 개수이 픽셀의 가로 x 세로의 총 개수가 해상도가 되며, 당연히 더 높은 해상도는 더 선명한 이미지를 제공합니다. 밀도요즘은 높은 해상도의 사진, 영상 등을 ..
-
SwiftLint SPM으로 설치하기 (using Swift Package Build Tool Plugin)iOS 2024. 3. 22. 14:38
새 프로젝트에 lint를 적용해 보려고 하니, 기존에 cocoapods나 brew에 관련된 설명만 있고 spm만으로 설치하는 것에 대한 내용이 잘 없어서 적어본다. 설치 방법이 다양하듯이 lint를 실제로 사용하는 방법도 몇 가지 있는 것 같은데, 이것저것 설치하기가 싫어서 Swift Package Build Tool Plugins 로 설치했다. Swift Package Build Tool Plugins 3줄 요약 1. Target 'None' 으로 패키지 추가. 2. SwiftLintPlugIn 추가. (using Swift Package Build Tool Plugins) # 1. Add Package 먼저 SPM으로 패키지를 추가한다. 정석 방법 대로. 단! 이때 Target은 None으로 설정해줘..
-
swift concurrency 사용해 이미지 권한 얻기iOS 2023. 11. 29. 19:49
[ 💡 3줄 요약 ] iOS 14 부터는 이미지 권한을 얻는 새로운 api 가 추가됨. (async, closure 모두 지원.) limited status 가 생겼으니 deprecated 된 기존 권한 얻는 방식을 사용할 경우 주의가 필요함. Concurrency 로 구현한 코드. func hasPhotoLibraryAuthorization() async -> Bool { if #available(iOS 14, *) { let status = await PHPhotoLibrary.requestAuthorization(for: .readWrite) return status == .authorized || status == .limited } else { return await withCheckedCont..
-
Xcode 15 Jump to define 단축키 변경iOS 2023. 10. 31. 13:53
https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes The Show Code Actions command has been replaced with Show Quick Actions to quickly access any menu command. By default, Command-clicking a token in the editor now performs Jump to Definition. AS-IS cmd + ctrl + 클릭 TO-BE cmd + 클릭