전체 글 184

Auto Layout을 사용하는 이유와 장점은 무엇인가요?

Auto Layout은 앱 화면을 다양한 기기와 해상도에서 일관성 있게 보여주기 위해 iOS 개발에서 필수적인 레이아웃 시스템입니다. 기기의 크기와 방향에 상관없이 인터페이스 요소를 동적으로 배치하고 크기를 조정할 수 있게 합니다. 장점:동적 레이아웃 지원: 화면 크기나 방향이 바뀌어도 레이아웃이 적절하게 조정됩니다.유지보수 편리성: 코드보다는 시각적으로 제약을 설정하여, 레이아웃의 수정과 유지가 쉬워집니다.다양한 기기 대응: iPhone, iPad와 같은 여러 기기에서 인터페이스를 일관되게 표현할 수 있습니다.  Auto Layout의 핵심 개념Auto Layout은 **제약 조건(Constraints)**을 사용하여 화면 요소의 위치와 크기를 지정합니다. 각 요소는 다른 요소나 화면의 특정 위치를 기..

정보/레벨 1 2024.10.31

Garbage Collection이란?

**Garbage Collection (GC)**은 프로그램이 더 이상 사용하지 않는 메모리(객체)를 자동으로 해제하는 메모리 관리 기법입니다. GC는 주로 고급 언어(Java, Python 등)에서 제공되며, 프로그래머가 메모리를 직접 해제하지 않아도 되도록 하여 메모리 누수(Memory Leak)와 같은 문제를 줄여줍니다. 왜 필요할까?컴퓨터에서 여러 프로그램을 사용하다 보면, 사용하다가 닫거나 더 이상 쓰지 않는 데이터들이 있습니다. 이런 데이터를 정리하지 않으면 컴퓨터가 느려지고, 멈출 수도 있습니다. 그래서 컴퓨터가 스스로 필요 없는 데이터를 찾아서 정리합니다.  Garbage Collection의 작동 방식GC는 프로그램이 사용하지 않는 객체를 탐지하고, 이를 메모리에서 제거하여 다른 객체가 ..

정보/레벨 0 2024.10.31

PNG와 JPG 차이점

PNG:PNG는 무손실 압축 방식을 사용하여 이미지 품질을 유지하면서 파일 크기를 줄이는 형식입니다. 따라서 투명 배경을 지원하며 로고, 아이콘, 그래픽, 스크린샷과 같이 고해상도 이미지를 표현할 때 적합합니다.하지만 PNG는 일반적으로 JPG보다 파일 크기가 크기 때문에, 웹 페이지에서 대량의 PNG 이미지를 사용할 경우 로딩 시간이 길어질 수 있습니다.PNG는 알파채널을 지원함 (투명한 배경화면이 가능)JPG (JPEG):JPG는 손실 압축 방식을 사용하여, 이미지 파일 크기를 상당히 줄일 수 있지만 약간의 품질 손상이 발생합니다. 이러한 이유로 사진과 같은 고해상도 이미지에 적합하며, 웹 페이지나 소셜 미디어에서 빠른 로딩을 위해 많이 사용됩니다.그러나 JPG는 투명 배경을 지원하지 않아, 배경이 ..

정보/레벨 0 2024.10.31

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