본문 바로가기

전체 글35

Multiple Window를 이용하여 Cover Window 만들기. Cover Window?앱 개발을 하다가 보면  Toast나 Popup과 같이 항상 Top Layer에 위치해야하는 View들이 있다.하지만, SwiftUI로 예를 들어서 View들의 Layer를 관리하기위해 제공하는 ZStack이나 Sheet와 같은 View들은 그 뷰에 종속되기 때문에 전역적으로 항상 Top Layer에 위치하기 힘들다. 어떤 뷰가 현재 보이든 간에 항상 최상단에 보여져야 할 View가 있다면 어떻게 보여줄 수 있을까?에 대한 고민을 하던중 좋은 아티클을 발견하여 번역해보았다.UIWindowUIWindow를 이용하여 View가 아닌 Window로 Layer를 쌓아보자!  ?? 그게 뭔말?우리가 평소에 View들을 쌓을 때에(Layer를 만들때)는 하나의 UIWindow위에 UIView.. 2023. 2. 5.
Task Group 문제점 Swift Concurrency를 사용하다가 보면 이런 문제를 마주할 수 있다. API가 많아졌을 때, 이를 한번에 호출하기가 쉽지 않다. 예를 들어 Home View를 구성하는데 세개의 View Component가 있고, 이 Component안의 데이터를 채우기 위해서는 세개의 API를 call해야한다고 가정을 해보자. 이 때 무지성으로 task안에 await를 하나씩 하나씩 넣으면 매우 비효율적인 모습이 되게된다. Why? Task안의 코드들은 마치 동기 코드인것 마냥 진행이된다. 따라서, getAData가 끝나지 않는다면 getCData는 실행되지 않는다. A, B, C의 데이터는 각각이 독립적이어서 어떤 것이 먼저 실행되든 상관이 없음에도 불구하고, getAData()가 끝나지 않으면 그.. 2023. 1. 14.
Swift Concurrency 알아보기 Swift Programming Language를 해석하여 Swift Concurrency에 대해서 알아보자. 자세한 내용은 위 링크를 참고하시면 좋겠다. Swift Concurrency 우리는 UI업데이트나 무거운 작업을 하기 위해서 비동기 / 병렬 실행 코드를 작성하곤 한다. 하지만.. 이런 병렬 또는 비동기 코드는 많아지면 질수록 관리에 많은 어려움을 겪는다. 또한, 느리거나 버그가 많은 코드에 동시성을 추가한다고 해서 그것이 빨라지거나 정확해진다는 보장은 없을 뿐더러 최악의 경우엔 디버깅만 어려워 질 수 있다. 이를 어떻게 Swift에서는 해결하려 했는지 확인해 보자. Without Swift Concurrency Swift Concurrency 언어 지원을 사용하지 않고 비동기 코드를 작성해보.. 2023. 1. 8.
Building Custom View with SwiftUI(WWDC19) - 2 지난 편에 이어서 SwiftUI의 Layout을 더 알아보자. 지난편에서 SwiftUI의 기본적인 Layout을 보았다면, 이번에는 좀 더 복잡한 View를 살펴본다. 들어가기 앞서.. -복습 UIKit과는 다르게 SwiftUI는 View자체의 Size로 layout을 설정한다. 우리가 익히 알던 Constraint가 없는 것이다. 따라서... Frame은 더이상 제약조건(Constraint)이 아니라 하나의 View로 인식해야한다. Child들에게 사이즈를 제안을 할 수 있지만 결국 Child가 자신의 크기를 선택한다. 물론, 부모보다 Child가 더 큰 사이즈를 가지게 되면 짤려 보이겠지만.. 부모가 child의 사이즈를 결정할 수 없다는 게 포인트! SwiftUI로 어떻게 구현할 수 있을까? Sta.. 2022. 11. 12.