[배줄이] 개발일지 Day 1

·2024년 3월 10일

개발 진행 상황

  • 탭바 구현
  • Realm Model 설계
  • 온보딩 첫번째 화면 UI

공수산정 결과

구분예상 작업 시간실제 작업 시간
탭바 구현10분2시간
Realm 모델 구현30분30분
온보딩 UI1시간2시간

공수산정에서 차이가 발생한 이유

탭바 가운데에 돌출된 버튼을 넣는 걸 처음 해봤는데, 보기와는 다르게 생각보다 많이 어려웠다.
그리고 온보딩 UI에서, 키보드가 올라오면 버튼이 가려지게 돼서 버튼도 같이 올라가고, 키보드가 내려가면 버튼도 함께 내려가게끔 구현하면서 SnapKit의 updateConstraints를 사용했는데, 이게 레이아웃 관련 에러가 나버리면서 많이 애먹었다.. 해결은 updateConstraints가 아니라 다른 방법을 사용했다.


기술적으로 어려웠던 부분

문제 1. 탭바 가운데에 버튼을 넣기

내가 구현하고자 하는 탭바는 가운데가 tabBarItem이 아니라 button이 들어가야 했다. 처음엔 가운데에 저렇게 돌출되게끔 구현하는 게 버튼으로 구현하는 건지도 몰랐었다..ㅜ 이게 라이브러리도 없어서 많이 난감했다.
구현 방식은 탭바 위에 버튼을 그려주는 것이었다. 그런데 이것도 문제점이 존재했다.
일단 tabBarItem 4개를 넣고 버튼을 추가하면 2번째 아이템과 4번째 아이템 간격이 너무 좁다.. 그래서 임시 방편으로 아이템 5개를 넣어주고 가운데 아이템을 버튼으로 가려주게 구현했다. 근데, 스크럼을 같이 하는 팀원분들께서 다음과 같은 방법들을 추천해주셔서 시도해보려고 한다.

  • 탭바 관련 라이브러리 사용

https://github.com/wajeeh-hassan/WHTabbar?ref=iosexample.com

  • flexible spacing 이용

https://www.hackingwithswift.com/example-code/uikit/how-to-add-a-flexible-space-to-a-uibarbuttonitem


문제 2. 키보드가 올라갔을 때 버튼 올리기

내가 원했던 건 이런식으로 키보드와 함께 버튼이 올라오는 거였다.
처음 했던 방법은 updateConstraint를 사용하는 거였는데 레이아웃 관련 에러가 자꾸 떠서 포기했다.
두 번째로 했던 방법은 Notification을 이용한 방법이었는데 솔직히 이해도 너무 안 가는 코드였다..
그러다가 UIKeyboardLayoutGuide에 대한 글(https://zeddios.tistory.com/1282)을 발견하게 됐는데 코드 한 줄로 해결 완료 할 수 있었다ㅜㅜ

아래와 같이 버튼의 bottom을 keyboardLayoutGuide.snp.top에 맞춰주면 해결된다!

completeBtn.snp.makeConstraints {
    $0.leading.trailing.equalToSuperview().inset(20)
    $0.bottom.equalTo(self.keyboardLayoutGuide.snp.top).offset(-20)
    $0.height.equalTo(44)
}

회고

쉬워보였는데도 생각보다 어려운 지점들이 있었다. 그래서 생각보다 많이 개발하지 못했다.. 돌출된 탭바 버튼 만들기, 버튼 올리기 같은 경우는 나중에 해보고 넘어갈까 싶었다. 그치만 이번 기회 아니면 다시 해보지 않을 것 같아서 귀찮더라도 도전해보았는데
역시 다음으로 미루지 말고 하길 잘 했던 것 같다~.~

내일 공수일지

구분예상 작업 시간
Realm 모델 수정30분
메인 페이지 UI3시간
온보딩 UI1시간

1개의 댓글

대박이네요..

답글 달기