· 성취/개선/학습한 내용 🏆
오늘은 채팅 앱 뷰를 구현하는 공부를 했다. 오토레이아웃을 이용해 채팅 버블을 유동적으로 조절했고, 데이터도 뷰끼리 주고 받게 했다. 그리고 꽤 오랜 시간에 걸쳐서 구현하다보니 제법 뷰와 테이블 뷰 셀을 연결하는 것에 익숙해졌고, Extension이라든가 protocol에 좀 더 능숙해진 것 같다. 그리고 DateFormatter 역시 내가 원하는 것으로 변환되게 사용할줄 알게 되었다.
- keyboardLayoutGuide
- scrollToRow
- autoDimension
그리고 채팅 방에 들어갔을때 마지막 채팅이 있는 곳으로 스크롤을 위치시키려면 아래와 같은 코드를 적어야한다.
//채팅방 제일 최신 쳇 위치로
let index = IndexPath(row: self.chatRoom.chatList.count - 1, section: 0)
self.chatTableView.scrollToRow(at: index, at: .bottom, animated: false)
그러나 viewDidLoad에 이 코드를 적을 때 xib를 만들고 register하는 코드보다 먼저 적으면 에러가 발생한다. 이 코드를 그 뒤에 적어주면 채팅 방에 들어갔을 때, 거의 제일 아래까지 오지만 마지막까지 오지는 않는다. 아마 LifeCycle 때문인 것 같다. 그래서 DispatchQueue 안에 이 코드를 넣어주면 이 코드의 위치가 어디든 LifeCycle이 그 뒤로 밀리기 때문에 스크롤도 제일 아래로 내려가며, 오류도 나지 않는다는 것을 알게되었다.
· 어려웠던 내용 😵😵💫
- push - pop, present - dismiss 개념을 아직 혼동하는 것 같다. 예를 들어 Push를 해놓고 다음 뷰에 가서 Dismiss를 한다음에 왜 안되지? 라고 생각하며 꽤 많은 시간을 허비했다. 이 개념만 좀 더 정확하게 알았다면 Pop해서 바로 처리했을 텐데 말이다.
- 그리고UINavigationController(rootViewController: vc)를 선택적으로 추가하는 것은 모달로 구현할때 사용한다는 것을 까먹었었다.!!! 그래서 중간에 push를 해놓고 네비게이션 타이틀이 왜 커스텀이 안되지라고 많이 해맸다.
- autoDimension은 텍스트뷰가 아닌 레이블에 적용해서 사이즈에 맞게 조절시키는 것이다!! (처음에 텍스트뷰로 시도했다가 안되서 이것도 많이 해맸다.)
· 궁금한 내용과 부족한 내용 ⁉️🤔
- 아직 연산프로퍼티를 언제 어디서 써야할지 감이 잡히지 않는다....
- 카톡처럼 텍스트뷰의 크기가 최대 3~5줄로 고정되고 그 이후로는 스크롤이 되게하는 건 어떻게 하는걸까?
· 느낀점 🌟
가장 크게 느낀 점이 모르는게 너무나도 많다는 것이다. 배우면 배울 수록 내가 할 수 있는게 늘어간다고 생각을 했었다. 그런데 오늘 채팅 앱 화면을 구현해보면서 아직 부족해서 적용할 수 없는 기술이 너무 많다는 것을 느꼈다. 그리고 새로운 기술이나 메소드 등을 아직 잘 못쓴다는 것 또한 느꼈다. 앞으로도 새로운 메소드들이 많이 생길텐데 지금부터라도 새로운 것을 어떻게 내 프로젝트에 적용시킬 수 있는 방법, 내가 이해하고 필요한 부분만 사용할 수 있는 방법을 배워야겠다는 생각이 든다.
'# TIL (Today I Learned)' 카테고리의 다른 글
TIL - 2024.01.16 화요일 (0) | 2024.01.16 |
---|---|
TIL - 2024.01.15 월요일 (0) | 2024.01.15 |
TIL - 2024.01.12 금요일 (0) | 2024.01.12 |
TIL - 2024.01.11 목요일 (0) | 2024.01.11 |
TIL - 2024.01.10 수요일 (1) | 2024.01.10 |