본문 바로가기
IOS/Developing

Portfolio

by Eisen Sophie 2021. 6. 22.

GitHub User Dictionary

프로젝트 리포지터리

사용한 기술

  • Swift 5, Xcode 12.5
  • Animation, Combine, MVVM-C, Singleton pattern, CocoaPod, UserDefaults, DiffableDataSource, REST API

수행 역할

  • MVVM - C 패턴을 적용해서 model, view, viewModel, Coordinator의 역할을 구분해서 구현
  • Combine을 이용해서 Reactive Programming으로 앱 기능들을 구현
  • 모든 UI와 동작을 Storyboard없이 코드로만 구현
  • DiffableDataSource를 이용해서 검색할때 CollectionViewCell들이 이동하는 애니메이션 구현
  • REST Api를 이용해서 GitHub로 부터 검색된 유저와 관련된 정보등을 클라이언트 상으로 가져와서 보여주기
  • UserDefaults를 사용해서 사용자가 선택한 유저는 클라이언트상에 저장

 

 

 

 

iFinance

프로젝트 리포지터리

사용한 기술

  • Swift 5, Xcode 12.5
  • Firebase, Animation, Delegate pattern, Singleton pattern, CocoaPod, UserDefaults, DiffableDataSource, REST API, NotificationCenter, CellAutoSizing, UITableViewDiffableDataSource, MVVM, DispatchGroup, autolayout

수행 역할

  • 모든 UI와 동작을 Storyboard없이 코드로만 구현
  • WWDC 19에 소개됐던 DiffableDatasource를 적용해서 검색 창에 생기는 변화들을 구현
  • Chart 라이브러리를 사용해서 주식 종목들의 그래프를 구현
  • Rest API를 이용해서 뉴스, 주식 종목 검색, 특정 종목의 데이터들을 Fetching해서 클라이언트에 뿌려주기
  • DispatchGroup을 이용해서 네트워킹시에 발생하는 비동기를 제어
  • NotificationCenter와 delegate패턴을 사용해서 view controller 들 사이에 data를 주고 받을수 있게 구현
  • Firebase realtime database를 사용해서 사용자들이 특정 종목에 관해서 의견을 주고 받을수 있는 게시판을 구현
  • Userdefault를 이용해서 사용자가 watch list에 추가한 종목들을 클라이언트에서 저장
  • SD web image 라이브러리를 이용해서 image caching을 가능하게 해서 이미지 로딩시 발생할수 있는 앱의 퍼포먼스 저하를 방지
  • 사용자가 작성한 글에 양에 따라 셀의 크기가 변할수 있게 auto cell sizing을 적용해서 ux를 향상

 

(왼쪽, 중앙)해당 종목에 관한 투자 아이디를 익명으로 나눌수 있다. (오른쪽)해당 종목에만 관련된 뉴스를 볼수 있다.

 

 

 

 

해야하는 당일의 운동 스케줄을 기록하고 계획할수 있게 해주는 어플리케이션

앱 스토어
프로젝트 리포지터리

사용한 기술

  • Swift 5, Xcode 12.5
  • Animation, Delegate pattern, Notification, Singleton pattern, CocoaPod, Open source (FS Calendar), File management

수행 역할

  • Auto Layout과 Interface Builder를 통한 UI 구현.
  • Open source인 FSCalendar를 이용한 달력 구현.
  • 해야하는 운동 이름을 작성할때 자동완성이 가능하게 구현
  • File management를 통한 클라인트 상에서의 데이터 저장하기.

Trouble Shooting

  • 쉬는 시간 타이머 기동후 어플을 나갔을 때 타이머의 남은 시간 계속 트랙하기
    • 문제: 타이머 밖에 나간 이후에 흐르는 시간과 유저가 셋팅해놓은 타이머 시간과의 불일치
    • 해결: 유저가 앱을 나갔을때의 시간과 다시 돌아왔을때의 시간의 차이 값을 구해서, 이 값을 타이머의 애니메이션에 반영을 해서 새로운 UI로 업데이트를 해준다.

 

 

 

 

 

GIPHY앱에서 NFT로 쓰일수 있는 이미지들을 검색어를 통해 보여줄수 있는 애플리케이션

프로젝트 리포지터리

사용한 기술

  • Swift 5, Xcode 12.5
  • REST API, Image Caching, Delegate pattern, Notification, Singleton pattern, CocoaPod, File management

수행 역할

  • Auto Layout과 Interface Builder를 통한 UI 구현.
  • REST API를 통해 GIPHY에서 제공하는 데이터를 가져와서 클라이언트에서 보여주기
  • Image Caching을 통해 앱 화면을 스크롤할때 발생하는 퍼포먼스 저하를 방지
  • File management를 통한 클라인트에서 데이터 저장하기.

Trouble Shooting

  • 앱의 전체적인 속도 저하 이슈
    • 문제: 이미지를 로딩해주고 사용자가 매번 화면을 스크롤 할때마다 넷상에서 매번 이미지 로딩으로 인한 앱의 속도 저하
    • 해결: 이미 로딩 해준 이미지는 cache상에 기록을 해줘서 넷상에서 매번 이미지를 가져오는 일을 하지 않게 한다.

 



Box Office에서 보여주는 영화목록과 관련정보 및 관람객들의 코멘트등을 보여주는 어플리케이션

프로젝트 리포지터리

사용한 기술

  • Swift 5, Xcode 12.5
  • Delegate pattern, REST API

수행 역할

  • Interface Builder를 통한 UI 구현.
  • REST API POST GET을 이용해서 댓글작성을 가능하게 구현
  • 예매율, 개봉일, 큐레이션 Data를 이용해서 영화에 대한 정보들을 sorting가능하게 구현