[iOS/Swift] 에셋(Asset) 추가하는 방법 / 이미지 넣기
안녕하세요. 개발하는 정주입니다.
오늘은 에셋(Asset)에 대해 포스팅하려고 합니다. 그럴듯한 앱을 만들기 위해서는 이미지 소스나 효과음 같은 음악 소스를 넣어주면 좋습니다. 그러기 위해서는 에셋에 대해 반드시 알아야 하는데요.
바로 시작합니다.
에셋 카탈로그
Xcode에서 프로젝트를 생성하면 Assets.xcassets 폴더가 자동으로 만들어집니다. 이 폴더를 에셋 카탈로그라고 부르며 앱에서 사용될 다양한 에셋을 관리해주는 역할입니다. 에셋 카탈로그는 에셋과 디바이스 속성(디바이스 특징, 사이즈, 주문형 리소스, 특정 타입의 정보 등)에 대한 파일의 맵핑을 통해서 앱 리소스에 쉽게 접근할 수 있도록 도와줍니다.
https://help.apple.com/xcode/mac/current/#/dev10510b1f7
https://help.apple.com/xcode/mac/current/#/dev10510b1f7
To see this page, you must enable JavaScript. Pour afficher cette page, vous devez activer JavaScript. Zur Anzeige dieser Seite müssen Sie JavaScript aktivieren. このページを表示するには、JavaScript を有効にする必要があります。
help.apple.com
에셋 카탈로그 구조
에셋 카탈로그는 세 개의 구조로 되어 있습니다.
Asset Catalog Folder(1번) : 에셋 카탈로그 폴더는 모든 에셋 폴더와 파일들을 갖고 있습니다.
Group Folder(2번) : 그룹 폴더는 다른 그룹 폴더나 에셋 폴더를 갖고 있습니다.
Asset Folder(3번) : 에셋 폴더는 리소스 파일들을 갖고 있습니다.
같은 프로젝트, 같은 타켓의 에셋 이름은 반드시 고유해야 합니다. 리소스 타입이 달라도 에셋 이름이 같으면 안 됩니다.
에셋 카탈로그 타입
에셋 카탈로그 타입과 확장자도 다양합니다. 아래 5개는 수많은 타입 중 대표적인 타입입니다.
폴더 타입 | 확장자 | 설명 |
App Icon Type | .appiconset | 앱 아이콘 원본 이미지입니다. |
Catalog Type | .xcassets | 에셋 카탈로그 구조의 최상위 폴더입니다. 한 개의 에셋 카탈로그에 단 하나만 존재 가능합니다. |
Image Set Type | .imageset | 이미지 에셋에서 UIImage와 NSImage의 인스턴스에서 사용되는 이미지입니다. |
Data Set Type | .dataset | 장치 실행 가능 코드(device-executable code)를 제외한 Xcode에 의해 생성된 모든 종류의 데이터를 포함하는 파일들의 집합입니다. |
Launch Image Type | .launchimage | 앱 실행 이미지입니다. iOS 7.0 이하 버전에서만 필요하며 iOS 8.0 이상은 스토리보드를 이용합니다. |
모든 종류는 공식 문서(https://developer.apple.com/library/archive/documentation/Xcode/Reference/xcode_ref-Asset_Catalog_Format/AssetTypes.html)를 확인해 주세요.
에셋 추가하기
이미지 파일을 Xcode에 넣어봅시다.
에셋 카탈로그 폴더를 클릭하고 + 버튼을 누르면 선택지가 나옵니다. 이미지 파일을 넣을 것이므로 "Image Set"을 선택하세요.
사용할 이미지를 드래그 & 드롭해줍니다.
이렇게 이미지가 들어가면 성공입니다.
에셋 임포트(Import) 하기
이번에는 누군가 만들어 둔 에셋들을 Import 해보도록 합시다.
동일한 방법으로 선택 팝업을 열어서 "Import"를 눌러 줍니다.
임포트 할 에셋 폴더를 선택하고 Open을 눌러줍니다.
Xcode에 에셋이 보이면 성공입니다.
마무리 잡담
오늘은 에셋과 이미지를 넣는 방법에 대해 알아보았습니다.
기초적인 것이지만 꽤나 복잡한 개념이 녹아있는 것 같습니다.
감사합니다!
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.