iOS/UIKIT 56

테이블 내에 있는 컬렉션뷰는 어떻게 구분할까?

위의 이미지를 보면 자연여행, 문화여행 이라는 문구가 있는 곳은 컬렉션뷰를 통해 구현했습니다.  그 밑에는 테이블뷰로 구성되어있고, 각 행은 컬렉션뷰 입니다.  각 뷰의 셀을 눌렀을 때 구분하고자 아래와 같이 코드를 작성했습니다. // MARK: - extension CollectionViewextension HomeViewController: UICollectionViewDelegate, UICollectionViewDataSource { func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { // 카테고리 부분 컬렉션 뷰 i..

iOS/UIKIT 2024.09.28

탭바 색상 설정

// .label 과 .secondaryLabel 사용 (간결함)tabBar.tintColor = .labeltabBar.unselectedItemTintColor = .secondaryLabel  tabBar.tintColor = .label / .secondaryLabel:간결함: UIColor의 미리 정의된 색상인 .label과 .secondaryLabel은 라이트/다크 모드에 맞게 자동으로 조정됩니다. 이 코드는 다크 모드 대응을 간단히 설정할 때 매우 유용합니다..label: 다크 모드에서는 흰색, 라이트 모드에서는 검은색 등, 시스템에 맞게 자동으로 설정된 텍스트 색상입니다..secondaryLabel: label보다 약간 더 흐린 색상으로, 라이트/다크 모드에 따라 변경됩니다. // UICo..

iOS/UIKIT 2024.09.23

CollectionView 특정 셀만 업데이트하기

셀 리로드 방식 개선:현재 선택된 카테고리가 변경되면 categoryCollectionView를 리로드하는 방식인데, 전체 셀을 리로드하는 대신에 특정 셀만 리로드하면 성능적으로 더 효율적입니다. 특히 데이터가 많아질 경우 전체를 리로드하는 대신 선택된 셀만 갱신하는 것이 더 좋습니다.  개선 전 코드 homeView.getHomeContentView().categoryCollectionView.customCategoryCollectionView.reloadData()  개선 후 코드 let previousSelectedIndex = placeSelectedIndex // 이전에 선택된 인덱스 저장placeSelectedIndex = indexPath.item // 새로운 선택 인덱스로 업데이트let..

iOS/UIKIT 2024.09.13

하드코딩 된 쿼리 파라미터 URL 문자열 보다 URLComponents와 URLQueryItem을 사용해보기

리팩토링 전 코드 class NetworkManager { static let shared = NetworkManager() func getCommonData(contentId: String, completion: @escaping (Result) -> Void) { guard let url = URL(string: "\(Constants.base_URL)/areaBasedList1?serviceKey=jlK%2B0ig7iLAbdOuTJsnkp6n0RdeEMtGKsw53jEMbKm3PcB7NFTSeUrnXixogiuvNtHQXeqxgV88buRZvTjG73w%3D%3D&numOfRows=10&pageNo=1&MobileOS=ETC&MobileApp=AppTest&_type=..

iOS/UIKIT 2024.09.04

minimumInteritemSpacing과 minimumLineSpacing 설정 및 위치

1. minimumInteritemSpacing역할: 동일한 행(row)에서 열(column) 사이의 간격을 설정합니다.적용: 여러 열이 있는 경우, 각 열 사이의 간격을 설정합니다.컨텍스트:UICollectionView가 수평 스크롤(horizontal scroll)일 때, 같은 행에 있는 항목들 간의 간격입니다.UICollectionView가 수직 스크롤(vertical scroll)일 때, 같은 열에 있는 항목들 간의 간격입니다.2. minimumLineSpacing역할: 행(row) 간의 간격을 설정합니다.적용: 여러 행이 있는 경우, 각 행 사이의 간격을 설정합니다.컨텍스트:UICollectionView가 수평 스크롤(horizontal scroll)일 때, 각 열 간의 간격입니다.UIColle..

iOS/UIKIT 2024.09.03

커스텀 탭바 내에 있는 아이콘 위치 조절하는 방법

private func createButton(imageName: String, tag: Int) -> UIButton { let button = UIButton(type: .system) // 버튼 구성 설정 var config = UIButton.Configuration.plain() let largeConfig = UIImage.SymbolConfiguration(pointSize: 24, weight: .bold, scale: .medium) config.imagePadding = 0 // 이미지와 텍스트 사이의 간격 config.imagePlacement = .top // 이미지를 텍스트 위에 배치 config.contentInsets = NSDirectio..

iOS/UIKIT 2024.09.01

DispatchQueue.main.async의 사용 위치와 방식에 따른 차이

DispatchQueue.main.async의 사용 위치와 방식이 다르며, 효율성 및 관리 측면에서의 차이점도 발생합니다. 첫 번째 함수에서는  DispathQueue.main.async 내에 UIView 변경을 담당하는 함수 configureData를 불러오고두 번째 함수는 configureData 메서드에서 DispatchQueue.main.async 내에 UIImage 변경하는 요소를 넣었습니다.  1. 첫 번째 함수에서의 DispatchQueue.main.asyncprivate func getCommonData(contentId: String) { NetworkManager.shared.getCommonData(contentId: contentId) { [weak self] results i..

iOS/UIKIT 2024.08.31