2022 Monthly I Learned - kirseia/study GitHub Wiki
2022. 12
- Metal Shading Language Spec.
- AnyCodable Value
- 재밌는 (?) 아이디어 같아서 기록
- How to use GeometryReader without breaking SwiftUI layout
- JSON 결과물을 swift struct로 변경해주는 툴
2022. 11
- SwiftUI Charts Tutorial
- TestFlight에서 매번 표시되는 '수출 규정 준수 없음' 설정을 생략하는 방법
- 매번 수동으로 하다가 최근에 애플 사이트에 해당 내용에 대한 경고가 있어서 추가했는데, 정리된 글이 있어서 남김.
- SwiftUI Redraw 분석, 2
- 코드만 따로 빼놓은 경우는 identity가 변경되어 다시 그려짐, struct 를 아예 분리해서 view를 별도로 만들면 identity 가 별도로 부여되어 관련 없는 경우 redraw 되지 않음
- 코드는 가능하면 별도 struct view로 extract 하자, 연결되는 값을 통으로 넘기지 말고 가능하면 개별값을 넘겨서 업데이트를 최소화 시키자.
- SwiftUI - NavigationLink in .sheet 또는 .sheet in NavigationLink 에서 탈출하기
- 예제와 같은 코드에서 탈출처리 할 때 최종적으로 탈출 후 다른 뷰로 이동처리하거나 하면, 이동되지 않는 경우 있음, 단계별로 disappear 중에 다른 뷰로 이동시켜버리면 disappear 중간에 루트가 사라져버려서 뷰가 남는 경우가 생김. animation 을 끄고 view를 사라지게 하거나 또는 dismiss 애니메이션이 끝날 때까지 대기 후 view 이동 처리를 해줘야 함.
2022. 10
- SwiftUI List - badge
- SwiftUI TabView - color change
- Public APIs
- api 사이트들 정리. 다 무료인것도 아니고 유료/무료 상업사용 불가 무료 등등 섞여 있음, 사용전에 체크 필요
- SwiftUI + Keyboard shortcuts
- Xcodes: Xcode
- xcode 업데이트로 고통받는 시간 안녕. 병렬 다운로드 + 빠른 압축 해제 알고리즘으로 업데이트 고통에서 벗어나자!
- 돈의 죽음
- 개발과 관련 없는 철학적인 이야기, 니체의 '신은 죽었다.'로부터 자본주의까지 이어지는 상균님의 글. 재밌게 읽었음.
- Toss의 가입 화면 UX 개선, Toss의 좋은 에러 메시지 만들기 6원칙
2022. 9
- CloudKit Product로 로드 설정
- Xcode 에서 svg 파일의 gradient 처리를 하지 못함. 벡터 대신 png 같은 이미지로 변경해서 사용해야 함
- SwiftUI Markdown 처리하기
- swiftui markdown 은 아직까지 문단이나, 중간에 color 를 바꾼다거나 하는건 불가능, 기존의 attributed string 을 활용해야 가능.
- github 일부 라이브러리는 문단 정도는 지원하기도 하나 컬러 변경 등은 여전히 attributed string 을 활용해야 가능...
- 원주율은 소수점 몇 째자리까지 필요할까
- 나사에서는 행성간 여행 할 때 소수점 15자리까지, 우주 크기 계산시 소수점 40번째자리 까지 사용하면 수소 원자 하나의 지름보다 작은 오차가 된다고 함.
- 개발 이야기는 아닌데 재밌어서 남김.
- addObserver 이후에 Remove 해야 할까
- block 기반 등록했으면 remove필요, 그렇지 않으면 안해도 됨.
- SwiftUI 그림자 관련
- .background(Color.yellow.shadow...) 이렇게 해도 됐던걸로 기억
- 악기 튜너 만들기
- 마이크로 입력받은 것을 fft 로 주파수 분석해서 코드를 찾는 방식. 마이크 -> 버퍼 -> 메모리로 읽어서 fft 처리까지 과정, 언젠가 써먹을지도
- iOS 16 위젯 대응법
- Xcode 15의 single size icon
- 리사이즈 알고리즘 사용하므로 디테일 깨질 수 있음, 기존에도 icon generator 같은걸 이미 쓰고 있다면 single size icon 쓰는게 나음.
- 디테일 신경 쓴다면 기존처럼 모든 아이콘 따로 만들어서 쓰는게 좋음.
2022. 7
-
개발자의 일 매듭짓기 - 개발팁은 아니지만 개발자라면 읽어보자~
2022. 6
- Apple apps schemes
- 모션 센서를 활용해 버튼에 그림자 이펙트 주기
- 예전 애플 음악앱 같은데 버튼에 비슷한게 적용되어있었는데 예전 생각이...
- 앱 간의 통신 - 설치 여부 확인하기
- SwiftUI 추가 변경되는 것들
- Swift Charts 좋다. Bottom sheet 이걸 왜 이제야...
- Xcode 14에서 변경된 점
- Swift 5.7에서 짧아진 option-unwrapping
- if let value = value { ... } -> if let value { ... } 가 되었다. 어색-_-)
- Swift 5.7
- Debug / Release Phase에 따라 앱 아이콘 변경하기
- 첫 시도는 fastlane 을 사용해봤는데 일반 빌드 시점에서 적용하기 애매해서 (배포가 아닌) 패스
- 두번째 시도는 https://www.raywenderlich.com/1716-how-to-change-your-app-icon-at-build-time 를 따라해봤는데, 시간이 지나서 빌드 구조가 바뀐것 때문인지 안됨
- 마지막 시도는 제목의 링크 방법, 간단하고 좋다. 진작 알았어야 했는데.; (배포 버전까지 아이콘에 남길 필요는 굳이 필요없어서 이 방법 사용, 배포시에는 fastlane add_badge 를 활용하는게 좋을 듯.)
- Launch screen 이 검정색으로 나올 때
- 나의 경우는 vc 설정에 initial vc 체크와 launch screen vc 체크가 안되어있었음
- AdMob ipad multi scene 대응하기
- viewDidAppear() 에서 로드해야하는게 핵심
- Binding Value의 변화를 .onChange() 로 체크하기 -> 불가능 -> .onReceive(Just(BindingValue), perform: { value in }) 을 활용해야 함
2022. 5
- AdMob prepare 는 SwiftUI 기준 app 의 .task 가 아니라 .onAppear 또는 onChange(phase - scene)에서 active 됐을 때 처리해야 아이패드에서 크래시 나지 않음.
- SwiftUI alert -> View.alert(isPresented: ...).alert(isPresented: ...) 중첩하면 오동작함 (동작 안하거나...) -> View.alert(item: )을 활요하자.
- Xcode shortcut
- Color Generator - Figma plugin
- SwiftUI pattern image 배경 처리
- SwiftUI preferredColorScheme 동작이 안되는 것
- Color 대신에 UIColor("lightColor") 를 사용할 경우 UIColor 는 colorScheme 에 따라 동작하지 않음.
- UIColor는 UIColor(color)?.resolvedColor(with: .init(activeAppearance: ...)) 을 사용해야 color scheme 에 따라 동작함
- 그냥 Color("lightColor")를 사용하면 colorScheme 에 따라 동작함.
- 화면 캡쳐 시 dark mode / light mode 반영 안되는 것 - 캡쳐 할 window 에 window.overrideUserInterfaceStyle = userInterfaceStyle 설정해줘야 함
2022. 4
- SwiftUI preview 안될 때 처리
- if [ $ENABLE_PREVIEWS == "NO" ] 를 활용해서 script run 을 막는다.
2022. 3
-
애드몹 native 광고 관련 정리
-
최근 출시 앱 기준 애드네트워크 효과 분석 - 애드몹 80, 앱로빈 15, 페북 4, 애드콜로니 1 정도의 효과가 있다.
- CalMaker+ 기준, 다른앱에도 붙여보고 추가 정보 올릴 예정
-
iOS 캡쳐시 다른 이미지로 대체해서 뷰 변경해주기. 다른 앱에서는 되는데... 캡쳐시 응답 받는 방법은 didScreenshot 처럼 캡쳐 후에만 알 수 있음. willScreenshot 은 없어서 대체가 안됨. 추후에 알아보기. - 캡쳐 확인 후 사진 접근해서 마지막 사진 삭제하는 방법이 있지만 괜찮아보이지 않는다.
-
UIActivityViewController 사용 시 image to save 가 뜨지 않는 경우, 앱의 privacy 설정 수정하기 - NSPhotoLibraryAddUsageDescription](https://stackoverflow.com/questions/39743492/ios-10-app-crashes-when-trying-to-save-image-to-photo-library)
2022. 2
- What is the iOS version global market share
- async await 사용 시 특정 라인만 main thread에서 동작시키기 - MainActor.run
- Redacted view - swiftui
- deep linking url scheme ios
- Font fallback cascading
- SwiftUI 에서 Font 는 Font(uiFont as CTFont) 이런식으로 캐스팅해서 생성하면 됨. 내부 디버깅은 안됨... uiFont의 내부를 확인해야 함