Swift/SwiftUI
-
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..
-
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..
-
[SwiftUI] @EnvironmentObjectSwift/SwiftUI 2024. 1. 7. 02:37
EnvironmentObject는 언제 사용하는가? : 여러 뷰(:기준마다 다름)에서 이용될 경우. SwiftUI에서 제공하는 속성 래퍼 중 하나로, 뷰 계층 전체에서 접근 가능한 데이터를 제공하는 데 사용, 나의 경우 3개 이상의 뷰에서 사용되면 EnvironmentObject로 생성해서 넘긴다. EnvironmentObject를 사용하려면, 먼저 ObservableObject 프로토콜을 준수하는 클래스를 정의하고, 이 클래스의 인스턴스를 최상위 뷰에 .environmentObject(_:) 수정자를 사용하여 제공해야함. @main struct MyApp: App { @StateObject private var modelData = ModelData() var body: some Scene { Wind..
-
[SwiftUI]연속되는 뷰 넘기는 상황에서 이미지, 텍스트의 길이가 달라져서 위치가 고정되지 않는 문제Swift/SwiftUI 2023. 12. 5. 21:36
버튼 위의 text부분이 한줄이다가 2줄이니까 버튼의 위치가 변경되는 상황 Vstack에 쌓아서 샌겨난 현상. -> 위의 text부분의 frame을 고정해줘서 해결 Text("\(guideDataSet.imagesAndTexts[index - 1].text)") .frame(height: CGFloat.screenHeight*0.075) 참고로 screenHeight이 부분은 extension으로 선언해준 부분. extension CGFloat { static let screenWidth = UIScreen.main.bounds.width static let screenHeight = UIScreen.main.bounds.height } screenHeight를 미리 선언해놓고 쓰면 편하다. UIScre..