Swift/SwiftUI
-
-
[SwiftUI] .transition(.move(edge: Edge))) - 방향성있는 애니메이션을 구현해보자Swift/SwiftUI 2023. 1. 13. 23:15
구현해볼 화면 👇👇 마치 TabView Page 처럼 나타가는 화면을 직접 구현해보자 List 가 두개 있다 Bool 에 의해 촥촥 하나씩 사라지면서 하나가 나타난다 이때 어떻게 구현하면 될까? SwiftUI는 아주 쉽게 구현할수 있다 아래 코드 처럼 하나는 .leading, 하나는 .trailing 을 주면 하나는 왼쪽에서 들어오고 나가고, 하나는 오른쪽으로 들어오고 나간다 그러면 마친 TabView 의 Paging 같은 효과를 낼수 있다 ㅎ
-
[SwiftUI] MVI Design Pattern 이란?Swift/SwiftUI 2022. 12. 26. 15:15
MVVM 을 사용하다 보니 이게 SwiftUI 에서 최선이 아닐 탠데 라는 고민을 하게 되었습니다.. 그 고민을 하게 된 원인은 👇👇 1. ViewModel 에서 너무 많은 일을 하고 있다. - Action 와 Property 를 모두 관리하려고 하다 보니 흡사 UIKit 에서 MVC (Massive View Controller) 와 같이 ViewModel 이 Massive 해지는 경험을 하게 되었습니다. 2. Data 의 흐름이 관리가 되지 않는다. - 1번째 이유가 겹치는 이야기인데 ViewModel 에서 Property의 값을 변경하기도 하고 참조하기도 하고 다양한 일을 하다보니 점점 Data Flow 가 어떻게 흐르는지 추적하기가 어려워 졌습니다. 그래서 고민하게 되었고 SwiftUI 에서 각광받..
-
[SwiftUI] 쌓인 NavigationLink 한번에 없애기Swift/SwiftUI 2022. 11. 27. 22:52
import SwiftUI class NavigationModel: ObservableObject { @Published var firstIsActive = false @Published var secondIsActive = false @Published var thirdIsActive = false func returnToView2() { firstIsActive = false } } struct ContentView: View { var body: some View { NavigationView { Root() } .environmentObject(NavigationModel()) } } struct Root: View { @EnvironmentObject var navModel: Navigation..
-
[SwiftUI] List 에서 기본 스타일 빼고 SwipeAction 사용하기Swift/SwiftUI 2022. 11. 17. 14:15
SwiftUI 에서 SwipeAction 을 사용하려면 List 안에서 View 가 그려져야한다 하지만 List 는 기본적으로 디자인이 먹혀있어서 아래와 같이 스타일을 빼주면 깨끗해진다 import SwiftUI struct ContentView: View { let someList = [1,2,3,4,5,6,7] var body: some View { NavigationView { List(someList, id: \.self) { element in Text("\(element)") .listRowSeparator(.hidden) .swipeActions { Button { } label: { Image(systemName: "trash") } } } .listStyle(.plain) .navigat..
-
[SwiftUI] 스켈레톤을 만들어주는 내장 기능 : redactedSwift/SwiftUI 2022. 11. 14. 11:00
Apple Developer Documentation developer.apple.com SwiftUI : Redacted ( onAppear / disabled ) 콘텐츠 모자이크 Redacted 에 대해 알아보겠습니다. Redacted(reason: .placeholder) iOS 14에서 SwiftUI에는 모든 콘텐츠를 redact 하는 새로운 한정자(modifier)가 있습니다. 새로운 view 한정자가 있는 모든 view 에 .redacted(reason:) 을 seons-dev.tistory.com
-
[SwiftUI] StateObject 을 init 에서 init 해보자Swift/SwiftUI 2022. 11. 5. 19:43
struct ProfileFriendsListView: View { @StateObject var observed: ProfileFriendsListViewObserved init(inActive: Binding, user: User) { _observed = StateObject( wrappedValue: ProfileFriendsListViewObserved( inActive: inActive, user: user )) }
-
NavigationLink 에서 SwipeAction 으로 돌아가기Swift/SwiftUI 2022. 10. 29. 16:28
extension UINavigationController: UIGestureRecognizerDelegate { override open func viewDidLoad() { super.viewDidLoad() interactivePopGestureRecognizer?.delegate = self } public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool { return viewControllers.count > 1 } }