Swift
-
NavigationStack에서 title Zstack사용으로 여백이 생김Swift/SwiftUI 2024. 2. 22. 21:46
상황 floatingButton 때문에 ZStack은 써야하는 상황 List를 띄우니 여백이 많이 남는다. struct ContentView: View { @State var diaryStore:DiaryStore = DiaryStore() var body: some View { NavigationStack{ ZStack { ListView(diaryStore: $diaryStore) VStack { Spacer() HStack { Spacer() Button(action: { print("플로팅 버튼이 클릭되었습니다.") }) { Image(systemName: "plus") .font(.title) .padding() .background(Color.blue) .foregroundColor(.whit..
-
[SwiftUI] 플로팅 버튼 만들기Swift/SwiftUI 2024. 2. 22. 11:43
안드로이드에서 주로 쓰이는 UI인 플로팅 버튼을 만들어봅시다. [구조 파악] 1. Zstack으로 ScrollView를 아래에, floatingButton을 위에 띄워준다. 2. spacer를 두개 줘서 왼쪽 아래에 floatingButton을 위치시킨다. (Hstack, Vstack 이용) struct ContentView: View { @State private var isButtonVisible = false let pages = [ "page1","page2","page3" ] var body: some View { ZStack { ScrollView{ VStack { ForEach(pages,id: \.self) { image in Image(image) .resizable() .aspectRa..
-
MVVM / MVCSwift 2024. 2. 21. 22:11
M/V/C - Model / View / ViewController M/V/VM - Model / View / ViewModel MVC에 ViewController의 책임이 과해져서 이를 ViewModel에 덜어준다. 한마디로, Data를 가지고 있는 instance/로직을 ViewModel에 전가함. MVVM의 View는 그냥 보여주기만 하는 친구임 MVVM의 View MVC의 ViewController 있는 것 ViewModel Data를 가지고 있는 instance 없는 것 Data를 가지고 있는 instance (이를 ViewModel로 보냄) - 의존성 기반으로도 참고 MVC 패턴은 주로 전통적인 GUI 기반 애플리케이션에서 사용되며, 애플리케이션을 세 가지 주요 구성 요소로 분리합니다: - M..
-
Combine - 연산자 receive/sink/storeSwift 2024. 2. 21. 21:49
viewModel.selectedItem .compactMap { $0 } .receive(on: RunLoop.main) .sink { framework in let sb = UIStoryboard(name: "Detail", bundle: nil) let vc = sb.instantiateViewController(withIdentifier: "FrameworkDetailViewController") as! FrameworkDetailViewController vc.viewModel = FrameworkDetailViewModel(framework: framework) self.present(vc, animated: true) }.store(in: &subscriptions) 해당 코드는 Combin..
-
swiftui에서의 검색Swift/SwiftUI 2024. 2. 17. 00:40
계산 속성을 이용하여 나타낸다. filteredStation을 계산속성으로 나타내고, 그 목록을 나타냄. 조건절로 거른다. var filteredStations: [SubwayStation] { if searchText.isEmpty { return stations } else { let initials = KoreanTextConverter.getInitials(from: searchText) return stations.filter { station in let stationInitials = KoreanTextConverter.getInitials(from: station.name) return stationInitials.contains(initials) } } } List(filteredStat..
-
UIkit과 SwiftUI이용하여 Scroll Paging 구현하기Swift 2024. 1. 27. 00:26
[뷰 설명] StackView: Text와 ContentView를 묶어주는 뷰 ViewController: UiKit -> 실제 페이지 올라가는 뷰 ContentView: currentPage 값만 받아옴. UIKit을 SwiftUI로 변환 Coordinator가 존재하여 페이지 넘김이 이루어졌을 때, UIScrollViewDelegate를 채택. StackView import SwiftUI struct StackView: View { @State var currentPage: Int = 0 var body: some View { ZStack{ ContentView(currentPage: $currentPage) Text("\(currentPage)").foregroundStyle(.white) } } ..