일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- @EnvironmentObject
- init?
- subject
- URL(string:)
- Operater
- Bug
- Creating Operators
- ios14
- SwiftUI
- dismiss
- swift6
- RFC1738/1808
- IOS
- NullObject
- typeorm
- @State
- nestjs
- @Environment
- SWIFT
- NavigationLink
- nonisolated
- @Binding
- RxCocoa
- init
- RxSwift
- operator
- vim
- Operators
- graphql
- Xcode
- Today
- Total
목록SwiftUI (35)
Tunko Development Diary
SwiftUI) Null(nil) Object Pattern 활용하기 SwiftUI에서 Null Object Pattern을 적극 활용해보는 방법을 남겨봅니다. Swift에선 nil Object Pattern 이라고 해야 되나 고민…🤔 실제 사용해보니 너무 유용하고? 옵셔널의 지옥에서 빠져나올 수 있고 특히 데이터모델과 View가 혼연일체? 되어있는 SwiftUI에서는 적극 사용중입니다. 우선 Null Object Pattern이란? Null Object Pattern은 객체 지향 디자인 패턴 중 하나로, 객체가 null일 때의 동작을 처리하는 데 사용됩니다. 이 패턴의 주요 목적은 클라이언트 코드에서 null 검사를 제거하여 코드의 복잡성을 줄이는 것입니다. Null Object Pattern은 클라이..
SwiftUI에서 사용하는 @StateObject 및 @ObservedObject는 View의 변경사항을 감지하여 View를 업데이트 하도록 지시합니다. 두가지는 비슷한 효과를 내지만 중요한 차이점이 있습니다. 여러 글들을 참고하고 실제로 시도해본결과 이렇게 요약할 수 있었습니다. @StateObject를 사용한 View는 부모뷰 변경에도 변경이 없습니다. @ObservedObject를 사용한 View는 부모뷰의 변경이 일어나면 초기화 됩니다. 즉, 속성 래퍼가 값을 기억하고 있지않습니다. 단지 관찰할 뿐이죠. 말로만 하면 재미 없으니 그림으로 보겠습니다. 아래 그림을 보면 3개의 값이 있고 각각 @State, @StateObject, @ObservedObject로 선언된 value: Int 를 나타냅니..
출처 : https://stackoverflow.com/questions/63745084/how-can-i-make-a-background-color-with-opacity-on-a-sheet-view SwiftUI .sheet를 이용한 View에서는 화면을 전부 채우지 않는 경우 배경이 투명하게 나타납니다. 의도적으로 이를 투명하게 해주기 위해서 View를 포함하고 있는 부모뷰의 백그라운드를 .clear로 설정합니다. 이를 SwiftUI에서 접근하기 위해서 UIViewRepresentable 를 사용하여 UIKit에 있는 UIView를 임시 생성해 줍니다. struct ClearBackgroundView: UIViewRepresentable { func makeUIView(context: Context..
https://developer.apple.com/documentation/swiftui/view/fixedsize() FixedSize를 한마디로 정리하자면 가장 이상적인 뷰의 크기로 적용하는 수정자 입니다. 이상적인 뷰의 크기라고 하니 잘 이해가 가지 않습니다… 우선 아래 테스트 예시를 봐주세요. FixedSize 사용전 struct FixedSizeView: View { var body: some View { VStack { Text("😐😐😐😐😐😐😐😐😐") .padding() .frame(maxWidth: .infinity) .background(Color.cyan) Text("😐😐😐😐😐😐") .padding() .frame(maxWidth: .infinity) .background(Color.gr..
일반적으로 화면을 닫을때 if #available(iOS 15.0, *) { @Environment(\\.dismiss) private var dismiss } else { @Environment(\\.presentationMode) var presentationMode } 을 사용하여 화면을 닫습니다. iOS 15 이후 부터는 @Environment(\\.dismiss) private var dismiss 가 사용됩니다. 하지만 문제가 있습니다. 뷰를 열고 닫을 때마다 이러한 @Environment 변수를 사용하는 모든 뷰의 Body 내부 코드를 재실행합니다. 따라서 앱 성능과 메모리 및 전력소비에 부정적인 영향을 미칠 수 있습니다. 앱이 오랫동안 이 작업을 수행하고 실행하는동안 리소스 사용량이 급증하..