Giter Site home page Giter Site logo

bithumb_awesome's Introduction

header


iOS developer


🍎 My Tech Stack 🍎



🍎 Tools I can use 🍎



bithumb_awesome's People

Contributors

kangkyung avatar ohtt-ios avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

bithumb_awesome's Issues

HomeView - 서버 연결

🔍 구현 내용

  • 라디오버튼 서버 연결
  • 관심버튼 로직 세팅
  • 실시간 티커 소켓 통신

🤔 고민과 해결


Tab 구현

🔍 구현 내용

  • TabView 세팅
  • Homeview 연결
  • AssetView 연결
  • SettingView 연결

QuoteView - 서버 연결

🔍 구현 내용

  • 실시간 데이터 웹소켓 연결
  • 검은색박스(시가) 구현

🤔 고민과 해결

AssetView - 레이아웃

🔍 구현 내용

가상 자산의 입/출금 현황 정보 뷰 구현

  • AssetListHeader
  • AssetListRow
  • AdditionalAssetName
  • CurrentAssetStatus

🤔 고민과 해결

SwiftUI List의 leading에 디폴트 padding이 들어감

.padding(.leading, -20)

일단은 반대방향으로 다시 패딩을 주어서 해결했습니다. 좀 더 고민해봐야할거 같아요..😅

SwiftUI Listsection header를 사용해서, 윗 뷰와의 간격이 벌어짐

List {
  Section(header: AssetListHeader()) {
//  ForEach(viewStore.assetData) { asset in
//     AssetListRow(asset: asset)
//  }
  }
}

UI적으로 크게 이상하지않아 그대로 두었습니다. 추후 문제가 생긴다면 커스터마이징하게 처리할 예정입니다!

ChartView - 차트 뷰 구현

🔍 구현 내용

  • x축 라벨 세팅
  • y축 라벨 세팅
  • 색상 설정
  • 초기 화면 줌 세팅
  • 데이터 연결
  • 드래그 시 축 변경 세팅

AssetView - 서버 연결

🔍 구현 내용

  • ComposableArchitecture 구현
  • 서버데이터 API연결

🤔 고민과 해결

코드 개선

dataRequest.responseData{ (response) in
  switch response.result {
  case .success(_):
    guard let value = response.value,
          let status = response.response?.statusCode else { return }
    switch status {
    case 200:
      do {
        if let json = try JSONSerialization.jsonObject(with: value, options: []) as? [String: Any] {
          var items = json["data"] as? [String: Any]
          let result = try items?.map { key, value -> Asset in
            let valueData = try JSONSerialization.data(withJSONObject: value, options: [])
            let assetResponse = try JSONDecoder().decode(AssetResponse.self, from: valueData)
            return Asset(ticker: key, data: assetResponse)
          }
          subscriber.send(result!)
        }
      } catch {
        subscriber.send(completion: .failure(Failure()))
      }
    default:
      break
    }
  case .failure(_):
    subscriber.send(completion: .failure(Failure()))
    break
  }
 }
  • .validate(statusCode: 200..<300)를 사용하여 불필요한코드를 줄였으나, 디코딩 부분의 개선이 필요합니다.
  • API의 타입이 일관성이없기때문에, 해당 부분의 개선을위해 고민하는 중입니다.
dataRequest
  .validate(statusCode: 200..<300)
  .responseData { response in
    switch response.result {
    case .success(let value):
      do {
        if let json = try JSONSerialization.jsonObject(with: value, options: []) as? [String: Any] {
          var items = json["data"] as? [String: Any]
          let result = try items?.map { key, value -> Asset in
            let valueData = try JSONSerialization.data(withJSONObject: value, options: [])
            let assetResponse = try JSONDecoder().decode(AssetData.self, from: valueData)
            return Asset(ticker: key, data: assetResponse)
          }
          subscriber.send(result!)
        }
      } catch {
        subscriber.send(completion: .failure(Failure()))
      }
    case .failure(_):
      subscriber.send(completion: .failure(Failure()))
      break
    }
  }

HomeView - 레이아웃

🔍 구현 내용

  • 상단 라디오버튼 세팅
  • 상단 헤더뷰 (가산자산명 / 현재가 / 변동률 / 거래금액) 세팅
  • Rowview 세팅
  • List 하단에 tabview 영역만큼 여백 주기

🤔 고민과 해결


HomeView - RowView 구현

🔍 구현 내용

  • 기본 레이아웃 세팅
  • 금액에 따른 색상 세팅
  • 단위 및 ' , ' 세팅
  • Core 세팅

🤔 고민과 해결


QuoteView - View 세팅

🔍 구현 내용

  • 스크롤 시작점을 가운데에서 시작하도록 구현
  • 매도 리스트
  • 매수 리스트
  • 부가정보 리스트

🤔 고민과 해결

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.