iOS 152

UILabel 에서 패딩 효과를 주고 싶다면?

UILabel은 기본적으로 내부 텍스트에 패딩을 줄 수 있는 기능이 없습니다. 하지만 패딩을 넣고 싶은 경우 다음과 같은 두 가지 방법으로 구현할 수 있습니다:1. UILabel을 서브클래싱하여 패딩 추가하기UILabel의 서브클래스를 생성하여 textInsets를 설정하면 패딩을 직접 추가할 수 있습니다.class PaddedLabel: UILabel { var textInsets = UIEdgeInsets(top: 4, left: 8, bottom: 4, right: 8) // 원하는 패딩 override func drawText(in rect: CGRect) { super.drawText(in: rect.inset(by: textInsets)) } overr..

iOS/UIKIT 2024.10.30

검색한 결과에서 중복된 데이터 통합하기

1페이지 당 10개의 데이터를 가져옵니다. 가져온 데이터를 카테고리별로 구분합니다. 카테고리 별 표시할 수 있는 데이터 수는 최대 3개입니다. 이때, 페이지 당 10개의 데이터 중에서 카테고리 별로 구분했을 때 1개 또는 2개 일 경우는 그 다음 페이지로 넘어갑니다. 넘어간 다음 페이지에서 카테고리 별로 데이터를 구분하여 누적하여 관리합니다. 이때, 페이지 내 또는 페이지 간의 중복된 데이터를 통합할 필요가 있습니다. (통합 또는 관리)페이지 단위로 검색 결과를 가져오면서 중복된 데이터를 제거하고, 각 contentTypeId별로 최소 3개의 항목을 확보하는 방식으로 구현해보겠습니다.  주요 구조uniqueContentIds (Set): 중복된 데이터를 체크하기 위해 contentId만 저장하는 Set입..

iOS/UIKIT 2024.10.30

카테고리별 검색 결과를 5개 보여주는 방법

구현 목적 서치바에 검색어를 입력합니다. 검색어를 기반으로 외부 API에 데이터를 요청합니다. 요청해서 받아온 데이터를 contentTypeId 별로 구분해서 최소 5개 씩 테이블 형식으로 보여줍니다. 이때, 외부에서 받아온 데이터를 1페이지 당 10개의 데이터를 가져옵니다.contentpyeId 별로 보여주는 최소 데이터 개수 5개를 채우지 못하면, 그 다음 페이지로 넘어갑니다. 이를 반복해서 최소 데이터 개수를 맞춥니다.   구현 코드 1. searchForKeyword(with:page:completion:)이 함수는 네트워크 요청을 보내어 특정 페이지의 검색 결과를 가져오고, 데이터를 contentTypeId별로 그룹화한 뒤 completion 클로저를 호출하여 **총 결과 수(totalCount..

iOS/UIKIT 2024.10.29

검색결과를 카테고리별로 구분하기

// MARK: - Variables// var spotResults: [AttractionItem] = []var spotResultsByContentTypeId: [String: [AttractionItem]] = [:] // contentTypeId별로 데이터 저장var showAllItems: Set = [] // 더 보기를 누른 contentTypeId를 저장  /// 검색어를 갖고 외부API를 통해 데이터를 불러오는 함수func searchForKeyword(with keyword: String) { NetworkManager.shared.searchKeywordList(keyword: keyword) { [weak self] results in switch result..

iOS/UIKIT 2024.10.28

UISearchBar 사용하기

UISearchBar를 사용하여 서치바를 커스텀했습니다. 돋보기의 크기와 두께를 조절했습니다. 서치바의 텍스트 필드의 배경색, 모서리에 라운드 및 색상을 추가했습니다.   let searchBar: UISearchBar = { let searchBar = UISearchBar() searchBar.placeholder = "지역, 공간, 큐레이션 검색" searchBar.searchBarStyle = .minimal return searchBar }()  func configureSearchBarTextField() { // UITextField appearance 설정 let searchTextFieldAppearan..

iOS/UIKIT 2024.10.26

나중에 꼭 해봐야할 "공유" 기능 -> UIActivityViewController

https://chatgpt.com/c/671889af-9864-800f-bb99-851914559f3b   위에 이미지 처럼 공유할 때 나오게 하고싶습니다. 그래서 구현을 해봤는데....   func shareButtonCalled() { detailSpotView.sharedButton.addTarget(self, action: #selector(didTappedSharedButton), for: .touchUpInside) } // MARK: - Actions // 공유 버튼을 누르면 호출되는 함수 @objc func didTappedSharedButton(_ sender: Any) { guard let contentid..

iOS/UIKIT 2024.10.24

loseButton에서 #selector(didTapClose)를 설정할 때, 클래스 자체에 액션을 추가하면 에러떠요

private let closeButton: UIButton = { let button = UIButton() button.setImage(UIImage(systemName: "xmark.circle.fill"), for: .normal) button.tintColor = .white button.addTarget(FullScreenImageViewController.self, action: #selector(didTapClose), for: .touchUpInside) return button }()  에러의 원인은 closeButton에서 #selector(didTapClose)를 설정할 때, 클래스 자체에 액션을 추가하려고 한 점 ..