본문 바로가기

Project56

[SwiftUI Project] 검색화면으로 전환하기 NavigationLink 재사용 가능한 검색창 SearchBarView.swift import SwiftUI struct SearchBarView: View { @Binding var searchText: String var body: some View { HStack(spacing: 0) { IconView(iconName: "magnifyingglass") .padding(.vertical, -10) .padding(.horizontal, -5) TextField("Search", text: $searchText) .foregroundColor(Color.white) .accentColor(Color.theme.binanceColor) // Cursor color .overlay( Image(systemName: "xmark.. 2022. 9. 14.
[SwiftUI Project] 재사용 가능한 NetworkingManager.. with Combine 코인리스트를 받아올 때 네트워크 작업을 하는 CoinDataService.swift 를 재사용 가능하게 작성합니다. 앱이 커지게 되면서 네트워킹 코드를 반복해서 쓰게 될 일을 줄여줍니다. 업데이트 전의 CoinDataService.swift import Foundation import Combine class CoinDataService { @Published var allCoins: [CoinModel] = [] var coinSubscription: AnyCancellable? init() { getCoin() } private func getCoin() { guard let url = URL(string: "https://api.coingecko.com/api/v3/coins/markets?vs_c.. 2022. 9. 14.
[SwiftUI Project] 코인 데이터 받아오기 with Combine 데이터를 받아오기 위해 CoinDataService 클라스를 생성합니다. CoinDataService.swift import Foundation import Combine class CoinDataService { @Published var allCoins: [CoinModel] = [] var coinSubscription: AnyCancellable? init() { getCoin() } private func getCoin() { guard let url = URL(string: "https://api.coingecko.com/api/v3/coins/markets?vs_currency=usd&order=market_cap_desc&per_page=250&page=1&sparkline=true&pri.. 2022. 9. 13.
[SwiftUI Project] HomeViewModel과 HomeView 연결, UI 작업 이번 작업은 왓치리스트, 코인리스트 선택버튼과 정렬 옵션버튼의 기본 UI를 만들고, ViewModel과 View를 연결하는 작업이었습니다. 버튼을 눌렀을 때 발생할 기능들은 향후 추가할 예정입니다. 버튼들..! private var listOptionBar: some View { HStack(alignment: .top, spacing: 30) { Text("Watchlist") VStack() { Text("Coin") .foregroundColor(Color.white) Capsule() .fill(Color.theme.BinanceColor) .frame(width: 30, height: 3) } Spacer() } .padding(.horizontal) .padding(.top, 15) .font.. 2022. 9. 13.
[SwiftUI Project] CoinRowView와 Double Formatter HomeView에서 보여지게 될 코인리스트의 RowView 입니다. 바이낸스를 참고하며 제작..! CoinRowView.swift import SwiftUI struct CoinRowView: View { let coin: CoinModel var body: some View { HStack(alignment: .top, spacing: 0) { leftColumn Spacer() rightColmn } .padding(.horizontal) } } struct CoinRowView_Previews: PreviewProvider { static var previews: some View { Group { CoinRowView(coin: dev.coin) .preferredColorScheme(.light.. 2022. 9. 12.
[SwiftUI Project] PreviewProvider Extension CoinRowView를 만들 때 샘플 데이터로 프리뷰로 보려면 다음과 같이 작성해야했습니다. CoinRowView(coin: CoinModel(..........) 매번 작성하는 것은 번거로운 작업입니다. CoinModel을 사용하는 뷰마다 반복되기 때문에 Extension을 만듭니다. 익스텐션 만들기 전의 예시코드 import SwiftUI struct CoinRowView: View { let coin: CoinModel var body: some View { Text(/*@START_MENU_TOKEN@*/"Hello, World!"/*@END_MENU_TOKEN@*/) } } struct CoinRowView_Previews: PreviewProvider { static var previews: .. 2022. 9. 12.