네이버 API 사이트에 원하는 API를 신청했다. 영화 검색을 할 것이기 떄문에 "검색" API를 신청했다!
앱과 서버간의 Json형태의 데이터를 주고 받기 위해서 꼭 알아야 하는 API이다! 과정을 이해하고 외워야하는 부분도 있는 것 같다.
간단하게 과정을 나열하자면,
1. configuration 결정
2. session 생성
3. URL
4. Task 생성
5. Decoding
URLSession은 다른 포스트로 더 자세히 다뤄야 할 것 같다!
URLSession 처리하는 과정을 싱글톤 패턴을 적용해보고 싶어서 도전.
class Singleton {
static let shared = Singleton()
private init() {}
}
검색 기능을 textfiled를 이용해서 구현하고 있었는데,,UISearchController를 통해서 검색기능을 구현하면 검색 결과를 tableview로 보여주는 것을 좀 더 간편하게 할 수 있다. 일단 textfiled로 해보고 바꿔야지ㅜ장단점은 제대로 알 수 있을듯,,
참고 링크
검색 결과 갯수에 따라 Tableview를 담은 컨테이너 뷰 높이를 다르게 하고 싶었다.
if 셀 높이 * 셀 갯수 > self.view.bounds.height {
컨테이너 뷰 길이 = self.view.bounds.height
}else {
컨테이너 뷰 길이 = 셀 높이 * 셀 갯수
}
이런식으로 컨테이너 뷰의 길이를 조정해주었는데, UISearchController로는 더 쉽게 할 수 있는지 알아바야겠다.
let tableView: UITableView = {
let tableView = UITableView()
tableView.keyboardDismissMode = .onDrag
return tableView
}()
UIswipegesturerecognizer로 계속 시도하다가 안되서 구글링해보니까 이러한 방법이 있었다! 검색 결과 많으면 키보드에 가려서 안보이기 때문에 테이블 뷰의 keyboardDismissMode를 .onDrag로 해주면 swipe 할 때 키보드가 내려간다
홈 뷰의 이미지가 모두 불러 오기 전에 로딩이 되고 있다고 알려줄 수 있는 Indicator view를 추가해 주었다.
영화 상세페이지로 웹 뷰를 띄어주고 3가지 방법이 있는데 SafariServices를 사용했다.
다음 프로젝트에서 업그레이드 중!!
https://levenshtein.tistory.com/527
https://medium.com/@dn070287gav/all-what-you-need-to-know-about-uicollectionviewcompositionallayout-f3b2f590bdbe
https://demian-develop.tistory.com/22?category=908651