Customizing the Browser

Panther·2021년 8월 12일
0
post-custom-banner

https://developer.apple.com/documentation/uikit/view_controllers/adding_a_document_browser_to_your_app/customizing_the_browser

"Customize the document browser’s look and behavior."

문서 브라우저의 모양 및 동작을 커스터마이징합니다.

Overview

브라우저의 모양을 설정할 수 있고, 문서 썸네일을 생성할 수 있으며, 브라우저의 동작을 수정할 수 있습니다.

Set the Browser's Appearance

browserUserInterfaceStyle 속성을 설정해서 브라우저의 모양을 변경할 수 있습니다. 문서 브라우저 뷰 컨트롤러는 화이트, 라이트, 다크 모양을 지원합니다.

Create Document Thumbnails or Icons

시스템은 지원되는 문서 타입에 대한 썸네일 혹은 아이콘을 자동으로 제공합니다. 만약 앱이 커스텀 혹은 써드파티 문서 타입을 사용하고 있다면, 해당 타입에 대한 썸네일 확장을 생성할 수 있습니다. 더 많은 정보는 QLThumbnailProvider를 살펴보시기 바랍니다.

QLThumbnailProvider
https://developer.apple.com/documentation/quicklookthumbnailing/qlthumbnailprovider
https://velog.io/@panther222128/QLThumbnailProvider

썸네일 확장을 제공하지 않으면, 시스템은 앱 아이콘에 기반해서 문서 아이콘을 생성합니다. 자동 아이콘 생성을 활성화하려면 프로젝트 네비게이터에 가서 타깃을 선택하고 Info를 클릭한 후 아래처럼 하시기 바랍니다.

  1. 문서 타입 섹션에서 문서의 UTI를 위한 지원을 선언합니다.
  2. 생성하려는 모든 커스텀 문서 타입에 대해 Exported UTIs 섹션에 있는 UTI를 임포트합니다.
  3. 앱에 의해 사용되는 모든 써드파티 문서 타입에 대해 Imported UTIs 섹션에서 UTI를 임포트합니다.

더 많은 정보는 Set the Supported Document Types를 살펴보시기 바랍니다.

Set the Supported Document Types
https://developer.apple.com/documentation/uikit/view_controllers/adding_a_document_browser_to_your_app/setting_up_a_document_browser_app#2904048
https://velog.io/@panther222128/Setting-Up-a-Document-Browser-App

앱의 아이콘은 아래 내용이 모두 true일 떄 파일 앱 혹은 문서 브라우저에서만 나타납니다.

  • 시스템은 UTI를 위한 썸네일을 자동으로 제공하지 않습니다.
  • 시스템은 UTI를 위한 아이콘을 이미 제공하고 있습니다.
  • 사용자가 UTI를 위한 썸네일 확장을 설치하지 않았습니다.
  • 앱이 UTI를 위한 문서 타입 지원을 선언하고 있고, 익스포트된 혹은 임포트된 타입으로써 UTI를 선언하고 있습니다.

Add Document Previews

시스템은 지원되는 문서 타입을 위한 프리뷰를 자동으로 제공합니다. 앱이 커스텀 혹은 써드파티 문서 타입을 사용하고 있다면, 해당 타입을 위한 프리뷰 확장을 생성할 수 있습니다.

더 많은 정보는 Quick Look을 살펴보시기 바랍니다.

Quick Look
https://developer.apple.com/documentation/quartz/quick_look
https://velog.io/@panther222128/Quick-Look

Modify the Browser's Behavior

아래 동작을 제어할 수 있습니다.

  • 브라우저가 여는 문서의 타입입니다.
  • 브라우저가 동시에 여러 파일을 열 수 있는지 여부입니다.
  • 브라우저가 새 문서를 생성할 수 있는지 여부입니다.

Set Allowed Document Types

브라우저 생성 시 허용된 문서 타입의 리스트를 설정할 수 있습니다. UIDocumentBrowserViewController 클래스의 init(forOpeningFilesWithContentTypes:) 메소드에 UTI 스트링 배열을 전달합니다. nil을 전달하면 브라우저는 앱의 Info.plist 파일에 있는 CFBundleDocumentTypes 키에 구체화된 문서 타입을 사용합니다.

CFBundleDocumentTypes 키 설정에 대한 더 자세한 설명은 Set the Supported Document Types를 살펴보시기 바랍니다.

Set the Supported Document Types
https://developer.apple.com/documentation/uikit/view_controllers/adding_a_document_browser_to_your_app/setting_up_a_document_browser_app#2904048
https://velog.io/@panther222128/Setting-Up-a-Document-Browser-App

아래 예시는 .txt 파일을 위한 문서 브라우저 생성을 코드 작성으로 하는 예시입니다.

let browser = UIDocumentBrowserViewController(forOpeningFilesWithContentTypes: ["public.plain-text"])

Enable Multiple Document Selection

기본값으로 사용자는 한 번에 한 아이템만 선택할 수 있습니다. 여러 문서 선택을 가능하게 하려면 문서 브라우저의 allowsPickingMultipleItems 속성을 true로 설정하시기 바랍니다.

Enable New Document Creation

사용자가 새 문서를 생성할 수 있게 하려면 아래 내용을 수행해야 합니다.

  • 브라우저의 allowsDocumentCreation 속성을 true(기본값)로 설정합니다.
  • UIDocumentBrowserViewControllerDelegate 객체의 documentBrowser(_:didRequestDocumentCreationWithHandler:) 메소드를 구현합니다.

이 단계를 완료한 후 시스템은 자동으로 문서 브라우저의 네비게이션 바에 추가 버튼을 포함시킵니다.

사용자가 추가 버튼을 누르면 시스템은 documentBrowser(_:didRequestDocumentCreationWithHandler:) 메소드를 호출합니다. 구현한 내용에서 사용자가 문서를 설정할 수 있는 커스텀 UI를 제공할 수 있습니다. 문서 템플릿의 리스트를 보여주는 것이 하나의 예입니다.

새 문서를 생성하고 이 문서를 임시 위치에 저장할 수 있습니다. 문서가 저장되자마자 제공되는 importHandler를 호출합니다. 요청을 승인하려면 문서의 임시 URL을 전달하고 모드(UIDocumentBrowserViewController.ImportMode.copy,UIDocumentBrowserViewController.ImportMode.move)를 임포트합니다. 요청을 취소하려면 nil을 전달하고 UIDocumentBrowserViewController.ImportMode.none을 임포트합니다.

Important
항상 importHandler를 호출해야 합니다. 새 문서를 생성할 수 없다면, URL에서 nil을 전달하고 임포트 모드에서 UIDocumentBrowserViewController.ImportMode.none을 전달합니다.

See Also


Customization

Adding Custom Actions and Activities

커스텀 문서 브라우저 액션, 활동, 바 아이템을 추가합니다.

https://developer.apple.com/documentation/uikit/view_controllers/adding_a_document_browser_to_your_app/adding_custom_actions_and_activities
https://velog.io/@panther222128/Adding-Custom-Actions-and-Activities


post-custom-banner

0개의 댓글