Reality Composer Pro 의 등장 ! Reality Composer Pro 랑 Reality Composer 의 차이는 아래 사진을 참고. Reality Composer 를 아주 살짝쿵 써본 경험이 있어서 뭐가 달라졌는지는 잘모르겠음 ;;; 참고로 Scene 을 구성안하고 간단히 3D 오브젝트 하나만 띄운다면 Model3D(named:) 를 써도 충분함!! ✓ 개발환경 - Xcode 15 Beta 3 ✓ 레퍼런스 - WWDC 23 > Develop your first immersive app [1] Reality Composer Pro 진입 여기 다운로드에 없는데, 베타여서 없는 건지 Reality Composer 처럼 독립적인 툴로 쓰는게 아니여서 없는 건지 모르겠음. Xcode 에서 Vi..
WWDC 23 > Explore SwiftUI animation 를 보다가 iOS 17에서 animation(_:body:) 등장을 알게 되었다. 기존에 animation(_:value:) 잘썼는데 왜 저 인터페이스가 추가되었을까? WWDC 에 나오는 내용으로 살펴보자. (참고로 이 글 을 먼저 읽고 오길 추천!) [1] 문제 이런 코드를 짰는데, pet 과 상관없는 다른 곳에서도 이 코드를 재사용하고 싶다고 해보자 그래서 이렇게 generic 하게 바꿔줬다. 그럼 어떤 위험이 있을까? 전자처럼 전체 계층구조를 제어할 수 있는 상황이고 leaf component 라면 원하는대로 애니메이션이 잘 작동한다. 하지만 content가 non-leaf component 라면 (== 하위 계층을 가지고 있는 뷰라면..
# iOS 17 미만 iOS 17 미만에서는 backgroundColor를 먹여도 text Selection이 그 위에 되었음 (iOS 16.4 로 테스트한 결과) 뷰계층구조를 보면 UITextSelectionRectView 가 텍스트를 나타내는 뷰보다 위에 있음을 명확히 알 수 있음. # iOS 17 하지만 iOS 17에서는 계층 구조가 바뀜! (베타이지만 가장 최신버전 iOS 17.2 로 테스트한 결과. 정식 하위버전도 동일함.) 17에서는 RectView가 아니라 RangeView로 바뀌고 글자를 보여주는 뷰 (_UITextLayoutFragmentView) 보다 더 하위에 위치하게 됨 RangeView 상위의 HighlightView 는 iOS 17 에 새로 나온건데 문서에도 behind 라고 적..
웃는 입꼬리(?)를 그리고 싶어서 Curved Path 를 그려본 기록 (with Animation) [1] Rectangle Path 그리기 (연습) 우선 가장 만만한 Rectangle 로 연습 먼저 해보겠습니다. rounded rectangle 을 Path 로 그려보면 다음과 같습니다. 이렇게 라인을 그리고 path 를 닫아서 네모를 완성시켜주는 코드입니다. 그리고 Shape 의 trim(from:to:) 모디파이어를 사용해서 애니메이션을 줄 수 있습니다. 예를들어 trim(from:0, to: 0.5) - 처음부터 50%까지만 그린다. trim(from: 0.5, to: 1) - 50%부터 끝까지 그린다. from을 0으로 고정시키고 to 를 0 ~ 1 사이로 바꾸면서 애니메이션을 주면 됩니다. 코..
렛츠스위프트 2023 에서 민소네님 발표를 통해 external view hierarchy debugger 가 있다는 것을 알게 되었다. (🥹) xcode view hierarchy debugger 를 실행하면 개발하다가 일시중단되는 셈이라 생산성이 낮아지고 오래 멈추고 기다렸는데도 안나오면 마음이 어려움. 두가지 소개해주신 것 정리 ~.~ 1) Lookin - 무료 - 오픈소스 (objc 임..) [ 사용법 ] 위의 사이트에서 맥용 앱을 다운받고 LookinServer 프레임워크를 앱에 embed 한다 (참고) 1. via CocoaPods (Recommended) pod 'LookinServer', :configurations => ['Debug'] 2. via Swift Package Manager..
KeyPath 를 SwiftUI 쪽에서 자주 쓰면서 Swift 코드에도 자주 사용하고 싶어서 정리 및 useful example 을 모아두려고 한다. 사실.. 예를들어 map(\.xx) 이런 코드 많이 축약됐네~ 이런 느낌도 잘안들고 익숙하지도 않아서 잘안썼는데 앞으로는 의도적으로 더 많이 써보고 싶음. [참고자료] - Swift Docs > Key-Path Expressions - KeyPath 구현 [1] Key Path 정리 1. 백슬래쉬를 쓰는 이런 Key-Path Expression 은 컴파일 타임에 KeyPath class 의 instance 로 교체된다. \. 2. 모든 타입에 subscript(keyPath:) 가 구현되어있다. 이 서브스크립트에 keypath 를 넘기며 사용하면 된다. s..
Collection 문서를 보면 Time Complexity 가 두개로 나온 부분이 많은데요, 예를들어 1) randomElement() 2) distance(from:to:) 3) count ✓ RandomAccessCollection = 효율적인 random-access index 순회를 지원하는 콜렉션 ✓ BidirectionalCollection = 양방향 (forward, backward) 순회를 지원하는 콜렉션 이렇게 두개의 콜렉션이 있는데, Expected Performance 에 잘 나와있는 것 처럼 bidirectional collection 는 전체 collection 을 순회해서 카운팅 해야하므로 O(1) 의 시간복잡도를 가질 수 없기 때문입니다. 각 콜렉션 문서에서도 차이를 잘 볼 ..
StoreKit Configuration File 의 기본 priceLocale 는 USD로 되어있다. 이걸 바꾸는 법을 알아보자. 참고로 Setting up StoreKit testing in Xcode 문서에 안나와있어서 이 글을 보고 알게됨! (wwdc 어딘가에 나와있을 것 같음) 파일 내부에 해당 세팅이 없고 다음과 같이 Editor 를 통해 변경한다. StoreKit Configuration File 선택 > Editor > DefaultStorefront 변경 그러면 StoreKit Configuration 아이템들의 price가 원화로 바뀌고 테스트 코드에서도 fetch 해온 product의 priceLocal / price가 원화기준으로 바뀐다. 이제 앱스토어커넥트에서 원화 기준으로 상품 ..
과거에 Continuations 를 이용해서 짰던 코드를 보는데 헷갈렸다.. @)@ 리마인드가 필요하군 우선 요 목차(?)가 머릿 속에 있어야한다. [1] 용어 기억 가끔 용어도 잘 생각이 안날 때가 있다,, [ Continuation ] 비동기 코드를 래핑해서 연속(continuation)을 만든다! 라고 기억하자 문서에서는 이렇게 표현한다. To create a continuation in asynchronous code, call the withUnsafeContinuation(function:_:) or withUnsafeThrowingContinuation(function:_:) function. [ CheckedContinuation vs UnsafeContinuation ..
[SwiftUI] @Observable 매크로 (1) 에서 이어집니다. [ 요약 ] # 1. 예전에 뷰에서 썼던 프로퍼티 래퍼 @State, @Binding, @ObservedObject, @StateObject, @EnvironmentObject, @Enviroment iOS 17+ 부터는 4개만 쓰면 됨 @State, @Binding, @Bindable (NEW), @Enviroment # 2. ObservableObject 가 Observale 매크로로 대체되고 뷰에서 프로퍼티 래퍼로 쓰던 것은 다음과 같이 매핑됨 ✓ @ObservedObject ----> 안써도 됨 ㄴ 하지만 텍스트 필드처럼 Binding을 넘겨줘야하는 경우는 @Bindable ✓ @StateObject ----> @State ✓..
- Total
- Today
- Yesterday
- flutter build mode
- Flutter 로딩
- ipad multitasking
- 플러터 얼럿
- Django FCM
- 플러터 싱글톤
- flutter deep link
- Flutter Spacer
- flutter 앱 출시
- 장고 URL querystring
- SerializerMethodField
- Flutter Clipboard
- Watch App for iOS App vs Watch App
- Django Heroku Scheduler
- PencilKit
- Django Firebase Cloud Messaging
- Dart Factory
- Flutter getter setter
- METAL
- 구글 Geocoding API
- DRF APIException
- drf custom error
- 장고 Custom Management Command
- Flutter Text Gradient
- ribs
- cocoapod
- github actions
- Python Type Hint
- Sketch 누끼
- flutter dynamic link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |