Project56 [SwiftUI Project] Scroll To Top 버튼 만들기 이번에 만들어 볼 것은 Scroll To Top 버튼입니다. ScrollView를 일정 수치만큼 내리면 나타나고, 탭하면 최상단으로 스크롤해줍니다. 사용할 때는 다음과 같이 작성할 수 있습니다. 1. Geometry Reader를 사용해 VStack Offset 얻기 2. offset 값에 따라서 보여지는 버튼 만들기 3. ScrollView에 id를 부여하고, 버튼을 눌렀을 때 id를 가진 ScrollView의 상단으로 이동하도록 작성 Sroll To Top 버튼이 사용된 프로젝트 코드 HomeView.swift import SwiftUI struct HomeView: View { @EnvironmentObject private var viewModel: HomeViewModel @State priva.. 2022. 9. 18. [SwiftUI Project] Sticky Header 만들기 이번에 구현할 기능은 스크롤 했을 시 상단에 고정되어 남아있는 Sticky Header입니다. Sticky Header는 사용되지 않는 어플이 없을 만큼 자주 볼 수 있는데요. iOS 14+ 에서 사용할 수 있는 LazyStack의 pinnedViews 옵션을 사용한다면 매우 손쉽게 구현할 수 있습니다. 이번 프로젝트에서는 HomeView.swift 에서 다음과 같이 사용하였습니다. struct HomeView: View { var body: some View { ZStack { // Background layer Color.theme.background .ignoresSafeArea() // content layer VStack(spacing: 0) { homeHeader ScrollView() { V.. 2022. 9. 18. [SwiftUI Project] 코인 검색하기 Filtering with Combine API에서 받은 코인 리스트 중에 유저가 원하는 키워드를 갖고 있는 코인만 보여주는 기능입니다. HomeViewModel.swift 에 filtering 함수를 작성해줍니다. import Foundation import Combine class HomeViewModel: ObservableObject { @Published var allCoins: [CoinModel] = [] @Published var searchCoins: [CoinModel] = [] [CoinModel] { // text가 비어있지 않을 때만 계속 진행, 비어있다면 coins를 리턴하라 guard !text.isEmpty else { return coins } // 입력된 문자를 소문자로 변환 let lowercasedText =.. 2022. 9. 17. [SwiftUI Project] TextField FirstResponder 텍스트필드 포커싱 하기 TextField가 보여지면 자동으로 선택되도록 하는 방법입니다. iOS 15 이상 타겟이라면 더 좋은 방법이 있다고 하니 참고해주세요..! 먼저 Cunstom 텍스트 필드를 만들어야 합니다. struct FirstResponderTextField: UIViewRepresentable { class Coordinator: NSObject, UITextFieldDelegate { @Binding var searchText: String var becameFirstResponder = false init(searchText: Binding) { self._searchText = searchText } func textFieldDidChangeSelection(_ textField: UITextField) {.. 2022. 9. 16. [SwiftUI Project] 다른 View를 탭하거나 스크롤 하면 키보드 내리기 텍스트필드가 아닌 다른 곳을 탭했을 때, ScrollView에서 스크롤 했을 때 키보드를 내릴 수 있는 방법입니다. 1. Cancel 버튼을 탭 했을 때 키보드 내리기 import Foundation import SwiftUI extension UIApplication { func endEditing() { sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) } } 키보드를 내리는 endEditing 함수를 작성합니다. Text("Cancel") .foregroundColor(Color.theme.binanceColor) .font(.subheadline) .onTapGesture { withAnimat.. 2022. 9. 16. [SwiftUI Project] 검색화면 전환 개선하기 GeometryReader 홈화면에서 검색화면으로 전환 시 문제라고 생각되는 부분이 생겼습니다. 전환이 되었을 때 코인 리스트가 바로 보여졌으면 좋겠는데.. gif에서 보이는 것처럼 몇 초 느리게 보여졌는데요. 홈화면에서 이미 한번 호출했던 데이터인데 어째서 이렇게 느릴까요? 아무래도 제 생각에는 검색화면에서 호출될 때 데이터를 받아오는 작업이 다시 일어나는 것이 아닐까 싶습니다. 검색기능은 앱에서 유저가 자주 사용하는 기능입니다. 검색화면으로 전환했을 때 미리 데이터가 준비되어있다가 로드된다면 좋을 것 같습니다. 그래서 찾은 방법은 GeomeryReader를 사용해서 SearchView를 옆에서 등장시키는 것입니다. HomeView와 함께 데이터를 로드하고 사용자가 버튼을 눌렀을 때 즉시 옆에서 등장하는 방식입니다. 사용자 경험.. 2022. 9. 15. 이전 1 ··· 5 6 7 8 9 10 다음