iOS/UIKIT 56

view.layer.masksToBounds = true와 view.clipsToBounds = true 차이

1. clipsToBounds = true적용 대상: UIView 자체view.clipsToBounds = true는 해당 UIView의 경계를 넘어서는 모든 하위 뷰나 콘텐츠가 잘리도록 설정합니다.이 속성을 true로 설정하면 뷰의 경계를 벗어나는 하위 뷰들이 화면에 보이지 않게 됩니다.이는 주로 하위 뷰들을 컨트롤하기 위한 목적으로 사용됩니다. 쉽게 말로 하면 superView가 있고, 그 안에 subView가 있다고 가정해보자superView에 clipsToBounds = true 설정하고, suvView가 superView 근처에 걸쳐 있다면? 그러면 걸쳐져 있는 부분만 보이고 그 외 부분은 보이지 않는다.  정리하면 clipToBounds의 true / false 차이는 superView 경계 ..

iOS/UIKIT 2024.08.29

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

Auto Layout을 사용하는 이유와 장점 Auto Layout은 iOS 및 macOS 애플리케이션에서 다양한 화면 크기와 방향에 따라 사용자 인터페이스(UI)가 적절하게 배치되도록 하는 레이아웃 시스템입니다. Auto Layout을 사용하는 이유와 그 장점은 다음과 같습니다:다양한 화면 크기와 장치 지원:iOS 장치는 다양한 화면 크기와 해상도를 가지므로, 동일한 레이아웃을 여러 화면에서 동일하게 유지하기가 어렵습니다. Auto Layout은 이러한 문제를 해결해 줍니다.동적 컨텐츠 지원:UI가 동적으로 변경되는 경우(예: 텍스트 길이가 가변적인 경우), Auto Layout을 사용하면 이러한 변화에 유연하게 대응할 수 있습니다.코드와 UI의 분리:Auto Layout은 인터페이스 빌더(Interfa..

iOS/UIKIT 2024.08.21

테이블 셀을 눌렀을 때 상세페이지로 데이터 전달하기

테이블 셀을 누르면 해당 여행지 정보를 상세 페이지로 전달하고, 이미지와 제목으로 보여줄 수 있도록 했습니다.  왼쪽 이미지에서 보이는 것은 키워드 검색 조회로 홈 화면에 보이는 테이블에 데이터를 전달할 때 사용되는 API 요청 변수 입니다. 오른쪽 이미지는 소개 정보 조회로 여행지에 대한 상세 정보를 알려주는 API 요청 변수 입니다.   이번에 제가 구현해볼 내용은 다음과 같습니다. 테이블을 누르면 해당 셀에 대한 정보 중에 contentid와 contenttyepid를 DetailViewController로 전달합니다. 그럼 DetailViewController에서는 전달 받은 contentid와 contenttypeid를 통해 소개 정보 조회 API의 파라미터로 사용합니다. 소개 정보 조회 API..

iOS/UIKIT 2024.08.21

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

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

iOS/UIKIT 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