iOS 152

UITableView를 UIView 넣어야 하나? 아니면 UIViewController에 넣어야 하나?

UITableView를 UIView에 넣는 것과 UIViewController에 직접 넣는 것 사이에는 몇 가지 중요한 차이점이 있습니다.  1. UIView 내부에 UITableView를 넣는 경우DetailContentView 재사용 가능성: 만약 DetailContentView를 다른 뷰 컨트롤러에서도 재사용할 가능성이 있다면, UITableView를 DetailContentView 안에 넣어도 좋습니다. 이렇게 하면 이 뷰를 포함한 모든 컨트롤러가 UITableView를 공통적으로 사용하게 됩니다.뷰 계층 구조의 복잡도 감소: UITableView와 다른 UI 요소들을 하나의 UIView 서브클래스로 묶으면, 뷰 계층 구조가 더 간단해지고, 레이아웃과 관리가 쉬워질 수 있습니다.UITableVie..

iOS/UIKIT 2024.08.16

iOS 앱의 생명주기(App Life Cycle)에 대해 설명해주세요.

iOS 앱의 생명주기 앱이 포그라운드 또는 백그라운드에 있을 때 시스템 알림에 응답하고 다른 중요한 시스템 관련 이벤트를 처리합니다.  Unattached (분리됨):앱이 아직 실행되지 않은 상태입니다.마치 잠들어 있는 상태와 비슷합니다.이 단계에서는 아무 작업도 할 수 없습니다.Foreground Inactive (전면 비활성):앱이 화면에 보이지만 아직 사용자 입력을 받지 않는 상태입니다.알람이 울려 막 깨어난 상태와 비슷합니다.이 단계에서 할 수 있는 일:화면 구성 요소 준비 (예: 아침에 옷 고르기)필요한 데이터 로드 (예: 오늘의 일정 확인하기)Foreground Active (전면 활성):앱이 완전히 활성화되어 사용자와 상호작용할 수 있는 상태입니다.깨어나서 하루를 시작한 상태와 비슷합니다.이..

iOS/Swift 2024.08.16

Swift에서 옵셔널이란 무엇이며, 언제 사용해야 하나요?

1. 옵셔널일상생활의 예로 설명해보겠습니다. 여러분이 친구에게 선물을 받는다고 상상해보세요. 이 선물 상자는 옵셔널과 비슷합니다.상자 안에 물건이 있을 수도 있고 (값이 있는 경우)상자가 비어있을 수도 있습니다 (nil인 경우)Swift에서 옵셔널은 이런 "있을 수도 있고 없을 수도 있는" 상황을 안전하게 다룰 수 있게 해줍니다.코드로는 이렇게 표현합니다var gift: String? // 선물이 문자열일 수도 있고, 없을 수도 있어요  2. 옵셔널 바인딩과 강제 언래핑 옵셔널 바인딩은 선물 상자를 조심스럽게 여는 것과 같습니다if let presentGift = gift { print("선물은 \(presentGift)입니다!")} else { print("선물이 없네요.")}  강제 언래핑..

iOS/Swift 2024.08.16

오토레이아웃과 UIScrollView의 동작 방식 이해

1. 왜 detailHeaderView.bottomAnchor.constraint(equalTo: basicScrollView.bottomAnchor, constant: -10)을 설정할까?UIScrollView는 내부 콘텐츠의 크기를 contentSize로 정의합니다. UIScrollView의 contentSize는 내부에 있는 모든 서브뷰의 위치와 크기를 기반으로 자동으로 결정됩니다. 만약 UIScrollView 내부의 마지막 서브뷰의 bottomAnchor가 scrollView의 bottomAnchor와 연결되지 않으면, UIScrollView는 contentSize.height를 자동으로 계산할 수 없습니다.detailHeaderView.bottomAnchor.constraint(equalTo: ..

iOS/UIKIT 2024.08.15

git에 개인 API_KEY 안보이게 올리는 방법

아래 이미지에서처럼 Config.xconfing 라는 파일을 하나 생성한다. 생성된 파일 안에는 자신의 API_KEY를 입력한다.   프로젝트에서 TARGETS -> info -> Key : API_KEY, Value: $(API_KEY)를 입력한다.  PROJECT의 Info에서 Debug에서 Config를 선택해준다. 만약 출시도 할 예정이라면 Release에서도 선택해준다. info 파일 내에 SSL(Secure Sockets Layer) 연결 문제로 인해 발생을 해결하기 위해 아래 코드를 추가한다. 특정 도메인에 대한 예외 추가: apis.data.go.kr 도메인에 대해서만 예외를 추가하려면 다음과 같이 설정한다.NSAppTransportSecurity NSExceptionDomains ..

iOS/UIKIT 2024.08.07

Xcode에서 iPhone Orientation 설정

Xcode에서 iPhone Orientation 설정은 앱이 지원하는 화면 회전 방향을 지정하는 부분입니다. 이는 사용자가 기기를 회전할 때 앱의 화면이 어떻게 반응할지를 결정합니다. iOS 앱에서는 일반적으로 가로 모드(landscape)와 세로 모드(portrait)를 지원하며, Xcode에서 이를 설정할 수 있습니다.Orientation 설정 위치Xcode에서 프로젝트를 열기: 프로젝트 파일(.xcodeproj)을 엽니다.프로젝트 설정 화면으로 이동: Xcode 왼쪽의 프로젝트 탐색기에서 프로젝트 파일을 선택합니다. 프로젝트 파일을 클릭하면 중앙에 프로젝트 설정 화면이 나타납니다.타겟 선택: 프로젝트 설정 화면에서 "Targets" 섹션에서 앱 타겟을 선택합니다.General 탭 선택: 타겟 설정 ..

iOS/UIKIT 2024.08.01

코어 데이터 사용해보기

구현 내용 영화 리스트를 길게 누르면 해당 영화를 저장한다. 앱을 껐다 켜도 그 내용이 사라지지 않게 코어 데이터에 저장한다.  구현 코드 코어 데이터의 Entities를 지정한다. 이 때 해당 내용은 데이터 모델과 같아야 한다(같지 않아도 되지만, 뭐 여기선 그렇게 한다.) import Foundationstruct TrendingTitleResponse: Codable { let results: [Title]}struct Title: Codable { let id: Int let media_type: String? let original_name: String? let original_title: String? let poster_path: String? let ..

iOS/UIKIT 2024.07.11