Code Monkey home page Code Monkey logo

airbnb-03's People

Contributors

corykim0829 avatar godrm avatar hanurii avatar haveagood avatar kjoonk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

airbnb-03's Issues

Save Button 토글 구현

  • 아직 백엔드 SAVE 요청 API가 구현되지 않았으므로 toggle 되도록 구현
  • 애니메이션 구현

StayListCollectionView에 TapRecongnizer 구현

  • 썸네일이미지뷰에는 didSelectItem이 작동되지 않기 때문에 UITapGestureRecognizer 구현
  • collectionView에서 tap 했을 때에 어느 cell인지 계산
  • StayListCollectionViewTapDelegate를 통해 ViewController에게 tap action 위임

StayListCollectionView ViewModel 구현

Stay 배열을 네트워크를 통해 데이터를 가져오면
StayCell에 대한 뷰모델 바인딩을 구현

  • ViewModelBindable 프로토콜 구현

  • StayViewModel 구현

  • StayListViewModel 구현

StayList SearchView, FilterView 구현

xib 사용

Search Field

최상단 텍스트 검색

  • 레이아웃
  • shadow 처리
  • return key 눌렀을 때 이벤트 처리(델리게이트)

Filter View

  • 버튼 배치
  • 외곽선 처리

메인 페이지 API 구현

  • : 필요한 데이터 스키마 구현
  • : 메인 페이지 Mockup API 제공
  • : 메인 페이지 API 구현

예약 기능 API 구현

  • : 필요한 데이터 스키마 구현
  • : 예약 기능 기능 Mockup API 제공
  • : 예약 기능 API 구현

상세페이지 API 구현

  • : 필요한 데이터 스키마 구현
  • : 상세페이지 Mockup API 제공
  • : 상세페이지 API 구현

지도 기능 API 구현

  • : 필요한 데이터 스키마 구현
  • : 지도 기능 Mockup API 제공
  • : 지도 기능 API 구현

NavigationController 구현

StayList -> StayDetail -> SectionDetail(?)에 쓸 NavigationController

  • TabBarController에서 root view controller로 설정
  • StayList <-> StayDetail push & pop
  • StayDetail <-> SectionDetail push & pop
  • Navigation bar 숨김 처리
  • 상세 화면에서 커스텀 View로 상단 바 구현
  • back 버튼 구현
  • SectionDetail View Controller 생성

StayCell 재사용 초기화 구현

  • prepareForReuse 메소드를 사용하여 초기화 구현
  • 재사용 할 때마다, stackView에 계속 추가되는 문제점
  • pageControl 초기화
  • scrollView contentOffset 초기화

StayCell - Description 부분 구현

썸네일 이미지 부분 제외 상세설명 부분 구현

  • DescriptionStackView

  • AttributtedString with UIImage

  • ReviewsLabel - AttributtedString

  • SuperHostLabel - AttributtedString

  • PriceLabel - AttributtedString

  • AttributtedString extension으로 더 편하게 사용하는 방법

StayList 뷰 파일들 Grouping

뷰 파일들이 많아져서 보기가 불편해서 그룹을 만들어서 정리하겠습니다.

  • StayCell
  • SearchField
  • SearchFilter
  • MapButton

[BE] Dao 구현

  • Data를 DB에서 직접 가져오는 Dao 클래스 구현

StayDetailViewController 기본 구현

  • StayList에서 Cell을 눌렀을 때 화면 전환
  • ViewController에 대응하는 View 작성: ScrollView 위에 StackView
  • NavigationController로 이동 처리
  • Detail 화면 내 섹션에 쓸 템플릿 작성

Save Button UI 구현

  • SaveButton 이미지 추가
  • SaveButton 뒤에 UIView를 추가하여 그림자, cornerRadius 구현
  • auto layout 수정

Mock API 구현

  • : Postman을 활용하여 Mock Server 생성
  • : Postman을 활용하여 Mock API 구현

AWS 인프라 구축

  • : 웹서버가 존재하는 EC2 서버 구축

  • : DB서버가 존재하는 RDS 서버 구축

  • : DB서버 보안을 위한 VPC 설정

  • : EC2서버 접속을 위한 KeyPair 공유 혹은 User 생성

  • : Nginx 설치

  • : Mysql 설치

AutoLayout 메소드 리팩터링

constraints() 메소드의 size 파라미터를 CGSize 타입으로 처리하고 있는데,
width, height 가 0이면 적용이 안되게 구현을 해놓았다.

하지만 이는 논리적이지 못해서 수정이 필요하다.

  • 커스텀 타입을 만들어서 해결하는 방안
  • optional 처리

SearchFilterView를 collectionViewHeader로 처리하기

상단에서 고정되어있지 않고 스크롤되면 같이 올라갈 수 있도록 headerView로 구현

의문점

  • collectionView의 header도 reusable인가
  • tableView 때에는 xib를 등록하면 경고가 떴었는데 collectionView도 그럴까?

프로젝트 설정

  • 프로젝트 생성

  • gitignore 추가

  • Only Portrait

  • 스토리보드 제거

  • Root ViewController

  • 마일스톤 생성

썸네일 이미지 scrollView 수정

현재 썸네일 이미지를 스크롤뷰 페이징으로 구현하려고, XIB에 scrollView를 추가하고 stackView가 scrollView의 subview로 있는 상황에서, stackView가 비어있으면 scrollView의 frame이 잡히지 않아서 constraint 에러가 발생합니다.

그래서 stackView에 뷰 하나를 넣고 isHidden을 해서 먼저 처리를 했습니다.

좋지 않은 방법이라 생각되어서 scrollView 부분은 코드로 구현해야할 것 같다는 생각이 드네요

scrollView 설정 메소드 및 스크롤 시 pageControl 업데이트

  • scrollViewDelegate를 별개의 클래스로 구현하지 말고, 바로 extension으로 채택해서 사용하는 방식으로 구현

  • 상세 페이지 재사용을 고려하여, 코드로 구현

  • 기존 XIB에 사용된 코드 리팩토링

  • 이미지들(썸네일 이미지)을 담을 뷰 자체를 XIB 또는 코드로 처리

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.