두리번 프로젝트에서 가장 걱정이 많았던 캘린더 뷰를 드디어 완성했습니다!
물론 거의 대부분 도움을 받아서 만들긴 했지만..ㅠ 예쁜 커스텀 디자인이 나와서 기분이 좋았습니다.
캘린더를 만들며 컬렉션뷰에 대해서 더 자세히 알게 되었고, 특히 Select와 Deselect를 잘 이해할 수 있었습니다!
또 저희 두리번은 PR을 올리면 최소 1명에게 코드리뷰를 받고, approve를 받아야 merge를 할 수 있다는 룰이 있는데, 캘린더를 만들며 옵셔널 바인딩의 중요성을 많이 배우게 되었습니다.
여행 일정을 추가하는 뷰를 완성했습니다!
걱정이 많았던 '시간 추가하기' 버튼은 뷰 계층을 분리하는 방식으로 해결을 할 수 있었습니다.
평소 개발을 하며 뷰 계층에 대해서는 생각을 해본 적이 많지 않았는데, 이번에 일정 추가 뷰를 구현하며 계층에 대해서 많은 생각과 연습을 해보게 되는 계기가 되었습니다.
@IBAction func startTimeButtonClicked(_ sender: Any) {
alphaView.alpha = 0.7
alphaView.insertSubview(dateView, belowSubview: alphaView)
let origImage = UIImage(named: "timeStartBoxline")
let startTintedImage = origImage?.withRenderingMode(.alwaysTemplate)
startTimeButton.setImage(startTintedImage, for: .normal)
startTimeButton.tintColor = Colors.pointBlue.color
startDateLabel.textColor = Colors.pointBlue.color
startTimeLabel.textColor = Colors.black1.color
dateView.snp.makeConstraints{ make in
make.top.equalToSuperview().offset(290)
make.leading.equalToSuperview().offset(26)
}
}
이런식으로 alpha값이 0으로 깔려있던 alphaView의 alpha값을 0.7로 올려주고, insertSubview메소드를 통해 버튼의 dateView를 올려주었습니다.
DatePicker도 처음 사용해봐서 걱정을 좀 했는데 생각보다 어렵진 않았습니다.
이후 PR에서 피드백을 받아 alphaView가 생성/소멸 될 때 다음과 같은 애니메이션을 추가했습니다.
이전에 완성했던 '새로운 여행 추가' 뷰와 이번에 완성한 캘린더 뷰를 플로우에 따라 폴더링을 마치고 네비게이션까지 연동할 계획입니다.
이후 '여행멤버 뷰' 작업을 진행할 예정입니다!