난리났다.
override func viewDidLoad() {
super.viewDidLoad()
// 그라데이션을 통해 하단으로 갈수록 어둡게 처리
let gradientLayer = CAGradientLayer()
gradientLayer.frame = view.bounds
gradientLayer.colors = [UIColor.clear.cgColor, UIColor.black.withAlphaComponent(0.4).cgColor] // 그라데이션 색상 설정
gradientLayer.locations = [0.7, 1.0] // 그라데이션의 위치 조정
view.layer.addSublayer(gradientLayer)
//titleLabel 폰트 설정
titleLabel.font = UIFont(name: "OAGothic-ExtraBold", size: 34)
titleLabel.textColor = UIColor(red: 1, green: 0.334, blue: 0.466, alpha: 1)
switch selectedIndex{
case 0:
titleLabel.text = "Ice Cream"
case 1:
titleLabel.text = "Cake"
case 2:
titleLabel.text = "Beverage"
case 3:
titleLabel.text = "Coffee"
default:
return
}
//cartButton 컬러 설정
cartButton.tintColor = UIColor(red: 1, green: 0.334, blue: 0.466, alpha: 1)
// UICollectionViewFlowLayout을 사용하여 컬렉션 뷰의 레이아웃 설정
let flowLayout = UICollectionViewFlowLayout()
flowLayout.sectionInset = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 8) // 상하좌우 여백 설정
flowLayout.minimumLineSpacing = 12 // 행 간 최소 간격
flowLayout.minimumInteritemSpacing = 12 // 열 간 최소 간격
flowLayout.scrollDirection = .vertical // 스크롤 방향
// 셀 크기 설정
let itemWidth = (collectionView.bounds.width - flowLayout.sectionInset.left - flowLayout.sectionInset.right - flowLayout.minimumInteritemSpacing) / 2 // 한 행에 2개의 셀이 들어가도록 설정
let itemHeight = itemWidth * 1.4 // 가로:세로 비율
flowLayout.itemSize = CGSize(width: itemWidth, height: itemHeight)
collectionView.collectionViewLayout = flowLayout
let backBarButtonItem = UIBarButtonItem(image: UIImage(systemName: "chevron.backward"), style: .plain, target: self, action: nil)
backBarButtonItem.tintColor = UIColor(red: 0.98, green: 0.42, blue: 0.51, alpha: 1.00)
backBarButtonItem.imageInsets = UIEdgeInsets(top: 0, left: 10, bottom: 50, right: 50)
self.navigationItem.backBarButtonItem = backBarButtonItem
self.navigationController?.navigationBar.backIndicatorImage = UIImage()
self.navigationController?.navigationBar.backIndicatorTransitionMaskImage = UIImage()
// 네비게이션 바 디자인 설정
navigationController?.navigationBar.shadowImage = UIImage() // 네비게이션 바 아래 선 제거
navigationController?.navigationBar.barTintColor = UIColor.systemBackground // 네비게이션 바 배경 컬러
// 컬렉션 뷰 데이터 불러오기
setupCollectionView()
// 초기에는 세그먼트 인덱스 0으로 설정하고 아이스크림 상품을 로드
segmentedControl.selectedSegmentIndex = selectedIndex
loadIceCreams()
}
정리해보았다.
override func viewDidLoad() {
super.viewDidLoad()
setupGradientLayer()
setupTitleLabel()
setupCartButton()
setupCollectionViewLayout()
setupNavigationBar()
setupCollectionView()
segmentedControl.selectedSegmentIndex = selectedIndex
loadIceCreams()
}
이런식으로 간결하게 정리하면 얻을 수 있는 장점들은 아래와 같다.
가독성 향상
모듈화 및 재사용성
유연성
디버깅 용이성
테스트 용이성
앞으로는 비슷한 기능들을 묶어 모듈화 하여 추후의 재사용성을 고려해 작업하는 습관을 만들어야겠다.
..앗.. 제얘기네요... 저도해봐야겠습니다ㅠㅠ.. 뷰디드로드 왕창 줄여야겟다