UIKitに内包されているクラスを一覧に起こしてみる

こちらは[iOS(その2) Advent Calendar](https://qiita.com/advent-calendar/2018/ios2)の24日目の記事です。

# はじめに
[公式ドキュメント](https://developer.apple.com/documentation/uikit)をぱっと見ただけだと、具体的になんのクラスが存在してて何に使えるかは各リンク先を参照しないと見ることができない。

そこで、一発でページ内検索が効くように1枚ページに一覧にしつつ、私的ざっくり解釈をメモがてら記載を添えてのちのち気になった項目を掘り下げやすくしとこう、という趣旨で書き進めます。

# App Structure

## [Core App](https://developer.apple.com/documentation/uikit/core_app)

アプリ作成時に作成されるAppDelegateクラスで使用できるメソッドの定義先だったりなど、アプリとiOSとのデータやり取りを準備しているクラス群。

### Application

#### [UIAplication](https://developer.apple.com/documentation/uikit/uiapplication)

1アプリに1個だけこのクラスのインスタンスが存在していて、アプリ自体のライフサイクルごとに何かしたいときやアプリが起動していない際のプッシュ通知処理、カスタムURLスキームの処理の実装の際などなど1画面では制御できないものを実装したいときにお世話になる。

### Device Environment

#### [UIDevice](https://developer.apple.com/documentation/uikit/uidevice)

端末の種類や画面の向きなどについて取り扱うクラス。

#### [UITraitCollection](https://developer.apple.com/documentation/uikit/uitraitcollection)

端末の画面サイズや3Dタッチ機能の対応有無判定などを取り扱うクラス。

### Documents

[ドキュメントベースアプリケーション](https://developer.apple.com/jp/document-based-apps/)を作成するために使用するクラス群。

#### [UIDocument](https://developer.apple.com/documentation/uikit/uidocument)

ローカルおよびiCloud経由でのファイル読み書きに使用するクラス。

#### [UIManagedDocument](https://developer.apple.com/documentation/uikit/uimanageddocument)

アプリでデータベース内のドキュメントにアクセスする際には使うと良いらしいUIDocumentのサブクラス。

### Pasteboard

#### [UIPasteboard](https://developer.apple.com/documentation/uikit/uipasteboard)

他のアプリとのデータのやりとりをする際に使用するクラス。

#### [UIPasteConfiguration](https://developer.apple.com/documentation/uikit/uipasteconfiguration)

他アプリからのドラッグ＆ドロップでのデータやり取りや貼り付けを受け入れるために実装するインターフェイス。

### User Activities

#### [NSUserActivity](https://developer.apple.com/documentation/foundation/nsuseractivity)

自分のアプリがバックグラウンドへ移動された際などに作成でき、アプリに復帰したタイミングでデータの復元をする目的で使用するクラス。
また、Spotlightの検索精度の向上にも使用。
小さな変更や編集に対しては使用せず、ユーザが後でまたは他デバイスでも続行したい可能性がある箇所で使用しなさい、とのこと。

### Services

#### [UIActivity](https://developer.apple.com/documentation/uikit/uiactivity)

他アプリへの共有処理時に使用するクラス。

#### [UIActivityViewController](https://developer.apple.com/documentation/uikit/uiactivityviewcontroller)

外アプリへの共有処理時に使用する標準UIを提供するクラス。

#### [UIActivityItemProvider](https://developer.apple.com/documentation/uikit/uiactivityitemprovider)

共有する直前に何かしたい場合に使用する。

## [Resource Management](https://developer.apple.com/documentation/uikit/resource_management)

### Storyboards

#### [UIStoryboard](https://developer.apple.com/documentation/uikit/uistoryboard)

.storyboard拡張子の1ファイルにつき1インスタンス存在するクラス。

#### [UIStoryboardSegue](https://developer.apple.com/documentation/uikit/uistoryboardsegue)

UIViewController間の画面遷移のアニメーションややりとりするデータについて取り扱うクラス。

#### [UIStoryboardUnwindSegueSource](https://developer.apple.com/documentation/uikit/uistoryboardunwindseguesource)

○個前の画面へ戻る遷移処理を取り扱うクラス。

### Assets

#### [UIImageAsset](https://developer.apple.com/documentation/uikit/uiimageasset)

アプリ内で持つ画像を管理するクラス。

#### [NSDataAsset](https://developer.apple.com/documentation/uikit/nsdataasset)

アプリ内で持つ画像以外の、例えば動画や音声などを管理するクラス。

### Nib Files

#### [UINib](https://developer.apple.com/documentation/uikit/uinib)

.xibファイルをソースコード内で取り扱うクラス。

## [App Extensions](https://developer.apple.com/documentation/uikit/app_extensions)

### Extension Support

#### [NSExtensionContext](https://developer.apple.com/documentation/foundation/nsextensioncontext)

アプリの拡張機能、ウィジェット作成などを取り扱うクラス。

### Document Provider

#### [UIDocumentPickerExtensionViewController](https://developer.apple.com/documentation/uikit/uidocumentpickerextensionviewcontroller)

UIDocumentPickerViewControllerの標準UIなファイル選択画面の拡張機能を取り扱うクラス。
この画面単独でインポート・エクスポートなどが可能で、選択時のフォルダ移動などを細かくカスタマイズも可能。

#### [NSFileProviderExtension](https://developer.apple.com/documentation/fileprovider/nsfileproviderextension)

ファイルプロバイダの拡張クラス。
外アプリから自分のアプリのコンテンツへアクセス可能にしたい際に使用。

# User Interface
## [Views and Controls](https://developer.apple.com/documentation/uikit/views_and_controls)

### View Fundamentals
#### [UIView](https://developer.apple.com/documentation/uikit/uiview)

画面上のビューオブジェクト用クラス。

### Container Views

#### [UIStackView](https://developer.apple.com/documentation/uikit/uistackview)

行または列形式にビューをレイアウトするオブジェクト用クラス。

#### [UIScrollView](https://developer.apple.com/documentation/uikit/uiscrollview)

含まれているビューのスクロールとズームを可能にするビュークラス。

### Content Views

#### [UIActivityIndicatorView](https://developer.apple.com/documentation/uikit/uiactivityindicatorview)

進行中ステータスを見せるのインジケータ表示用のクラス。

#### [UIImageView](https://developer.apple.com/documentation/uikit/uiimageview)

画像を表示するためのクラス。

#### [UIPickerView](https://developer.apple.com/documentation/uikit/uipickerview)

回転ホイールまたはスロット形式にて値を設定するUIを提供するクラス。

#### [UIProgressView](https://developer.apple.com/documentation/uikit/uiprogressview)

時間の経過とタスクの進行状況を表すビュー用クラス。

### Controls

#### [UIControl](https://developer.apple.com/documentation/uikit/uicontrol)

スイッチやスライダーなどのUIの基礎となるクラス。

#### [UIButton](https://developer.apple.com/documentation/uikit/uicontrol)

ボタン形式のUIを提供するクラス。

#### [UIDatePicker](https://developer.apple.com/documentation/uikit/uidatepicker)

年月日を選択するUIを提供するクラス。

#### [UIPageControl](https://developer.apple.com/documentation/uikit/uipagecontrol)

水平方向にドット表現されるページ形式の表示をする際に使用するクラス。

#### [UISegmentedControl](https://developer.apple.com/documentation/uikit/uisegmentedcontrol)

複数のセグメントが個別のボタンとして機能する水平方向のコントロールを提供するクラス。

#### [UISlider](https://developer.apple.com/documentation/uikit/uislider)

連続した値の範囲から1つの値を選択するUIを提供するクラス。

#### [UIStepper](https://developer.apple.com/documentation/uikit/uistepper)

値の増減をさせるためのUIを提供するクラス。+-ボタンが搭載。

#### [UISwitch](https://developer.apple.com/documentation/uikit/uiswitch)

On/OffなどのBoolean的な選択をさせるためのUIを提供するクラス。

### Visual Effects

#### [UIVisualEffect](https://developer.apple.com/documentation/uikit/uivisualeffect)

ぼやかすなどの視覚効果オブジェクト用のインスタンス。

#### [UIVisualEffectView](https://developer.apple.com/documentation/uikit/uivisualeffectview)

複雑なエフェクトを取り扱うビュー用クラス。

#### [UIVibrancyEffect](https://developer.apple.com/documentation/uikit/uivisualeffectview)

視覚効果が設定されているビューの背景コンテンツの色を調整して表示するクラス。

#### [UIBlurEffect](https://developer.apple.com/documentation/uikit/uiblureffect)

視覚効果が設定されているビューの背景コンテンツをぼかして表示するクラス。

### Bars

#### [UIBarItem](https://developer.apple.com/documentation/uikit/uibaritem)

画面の下部バーへ表示されるボタンのスーパークラス。

#### [UIBarButtonItem](https://developer.apple.com/documentation/uikit/uibarbuttonitem)

ツールバーまたはタブバーに特化したボタン用クラス。

#### [UIBarButtonItemGroup](https://developer.apple.com/documentation/uikit/uibarbuttonitemgroup)

iPadのキーボードの上にあるショートカットバーの一連のバーボタン項目を取り扱うクラス。

#### [UINavigationBar](https://developer.apple.com/documentation/uikit/uinavigationbar)

画面上部のバーに表示されるナビゲーションコントロールを提供するクラス。

#### [UISearchBar](https://developer.apple.com/documentation/uikit/uisearchbar)

検索関連の情報を受け取る特殊なクラス。

#### [UIToolbar](https://developer.apple.com/documentation/uikit/uitoolbar)

画面の下部に1個以上のボタンを含んで表示するバー状のUIクラス。

#### [UITabBar](https://developer.apple.com/documentation/uikit/uitabbar)

タブバーに1個以上のボタンを含むUIクラス。

#### [UITabBarItem](https://developer.apple.com/documentation/uikit/uitabbaritem)

タブバーに表示するボタンのクラス。

## [View Controllers](https://developer.apple.com/documentation/uikit/view_controllers)

### Custom View Controllers

#### [UIViewController](https://developer.apple.com/documentation/uikit/uiviewcontroller)

UIKitアプリのビュー階層を管理するオブジェクト用クラス。

#### [UITableViewController](https://developer.apple.com/documentation/uikit/uitableviewcontroller)

TableViewの管理を専門とするビュー階層管理用クラス。

#### [UICollectionViewController](https://developer.apple.com/documentation/uikit/uicollectionviewcontroller)

CollectionViewの管理を専門とするビュー階層管理用クラス。

### Split View Interface

#### [UISplitViewController](https://developer.apple.com/documentation/uikit/uisplitviewcontroller)

Split View表示に対応するためのクラス。

### Navigation Interface

### [UINavigationController](https://developer.apple.com/documentation/uikit/uinavigationcontroller)

階層化されているビューコントローラ群を管理する機能を提供するクラス。

### Page View Interface

#### [UIPageViewController](https://developer.apple.com/documentation/uikit/uipageviewcontroller)

コンテンツのページ間を管理する機能を提供するクラス。

### Tab View Interface

#### [UITabBarController](https://developer.apple.com/documentation/uikit/uitabbarcontroller)

タブバーによって切り替え先の画面を管理するクラス。

### Search Interface

#### [UISearchContainerViewController](https://developer.apple.com/documentation/uikit/uisearchcontainerviewcontroller)

検索結果表示を管理するクラス。

### [UISearchController](https://developer.apple.com/documentation/uikit/uisearchcontroller)

検索情報の受付と結果表示を管理するクラス。

### Images and Video

#### [UIImagePickerController](https://developer.apple.com/documentation/uikit/uiimagepickercontroller)

写真・動画・メディアライブラリでのコンテンツ選択標準UIを提供するクラス。

#### [UIVideoEditorController](https://developer.apple.com/documentation/uikit/uivideoeditorcontroller)

動画のトリミングを行う標準UIを提供するクラス。

### Document Browser

#### [UIDocumentBrowserViewController](https://developer.apple.com/documentation/uikit/uidocumentbrowserviewcontroller)

ローカルやiCloud上に保存されている文書ファイルを閲覧して操作を行うためのUIを提供するクラス。

#### [UIDocumentPickerViewController](https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller)

ローカルやiCloud上に保存されている文書ファイルを選択する形でアクセスするためのUIを提供するクラス。

### Document Previewing

#### [UIDocumentInteractionController](https://developer.apple.com/documentation/uikit/uidocumentinteractioncontroller)

アプリで直接処理できないファイル形式のファイルをプレビュー、開く、または印刷するUIを提供するクラス。

### iCloud Sharing

#### [UICloudSharingController](https://developer.apple.com/documentation/uikit/uicloudsharingcontroller)

CloudKitにて共有レコードにユーザーを追加および削除操作をするための標準UIを提供するクラス。

### Word Lookup

#### [UIReferenceLibraryViewController](https://developer.apple.com/documentation/uikit/uireferencelibraryviewcontroller)

単語または用語の定義を検索するための標準UIを提供するクラス。

### Presentation Controllers

#### [UIPresentationController](https://developer.apple.com/documentation/uikit/uipresentationcontroller)

画面のモーダル表示UIを提供するクラス。

## [View Layout](https://developer.apple.com/documentation/uikit/view_layout)

### Layout Guides

#### [UILayoutGuide](https://developer.apple.com/documentation/uikit/uilayoutguide)

Auto Layoutの各種値を取り扱うクラス。

#### [NSLayoutDimension](https://developer.apple.com/documentation/uikit/nslayoutdimension)

サイズベースのレイアウトを行うための値を取り扱うクラス。

### Anchors

#### [NSLayoutAnchor](https://developer.apple.com/documentation/uikit/nslayoutanchor)

レイアウトの各制約を設定する際のオブジェクト用クラス。

#### [NSLayoutXAxisAnchor](https://developer.apple.com/documentation/uikit/nslayoutxaxisanchor)

水平方向のレイアウトの各制約を設定する際のオブジェクト用クラス。

#### [NSLayoutYAxisAnchor](https://developer.apple.com/documentation/uikit/nslayoutyaxisanchor)

垂直方向のレイアウトの各制約を設定する際のオブジェクト用クラス。

## [Animation and Haptics](https://developer.apple.com/documentation/uikit/animation_and_haptics)

### Haptic Feedback

#### [UIFeedbackGenerator](https://developer.apple.com/documentation/uikit/uifeedbackgenerator)

すべてのフィードバックアクションを取り扱うためのすべての親クラス。

#### [UIImpactFeedbackGenerator](https://developer.apple.com/documentation/uikit/uiimpactfeedbackgenerator)

物理的なフィードバックを表現するためのUIFeedbackGeneratorサブクラス。

#### [UINotificationFeedbackGenerator](https://developer.apple.com/documentation/uikit/uinotificationfeedbackgenerator)

成功、失敗、警告が伝わるように表現するUIFeedbackGeneratorサブクラス。

#### [UISelectionFeedbackGenerator](https://developer.apple.com/documentation/uikit/uiselectionfeedbackgenerator)

選択の変更が伝わるように表現するUIFeedbackGeneratorサブクラス。

## [Windows and Screens](https://developer.apple.com/documentation/uikit/windows_and_screens)

### Windows

#### [UIWindow](https://developer.apple.com/documentation/uikit/uiwindow)

アプリのUIへイベントを送出する背景クラス。

### Popovers

#### [UIPopoverPresentationController](https://developer.apple.com/documentation/uikit/uipopoverpresentationcontroller)

ポップオーバー内のコンテンツ表示を管理するクラス。

#### [UIPopoverBackgroundView](https://developer.apple.com/documentation/uikit/uipopoverbackgroundview)

ポップオーバーの背景ビュークラス。

### Alerts

#### [UIAlertController](https://developer.apple.com/documentation/uikit/uialertcontroller)

ユーザーにアラート表示するオブジェクト用クラス。

#### [UIAlertAction](https://developer.apple.com/documentation/uikit/uialertaction)

アラート内に表示できるボタン。

### Screens

#### [UIScreen](https://developer.apple.com/documentation/uikit/uiscreen)

ハードウェアベースのディスプレイに関連するプロパティを提供しているクラス。

#### [UIScreenMode](https://developer.apple.com/documentation/uikit/uiscreenmode)

UIScreenに設定できる属性を取り扱うクラス。

# User Interactions

## [Touches, Presses, and Gestures](https://developer.apple.com/documentation/uikit/touches_presses_and_gestures)

### First Steps

#### [UIResponder](https://developer.apple.com/documentation/uikit/uiresponder)

イベントに応答して処理するためのインターフェイス。

#### [UIEvent](https://developer.apple.com/documentation/uikit/uievent)

応答先のイベントの詳細についてのオブジェクト用クラス。

### Touches

#### [UITouch](https://developer.apple.com/documentation/uikit/uitouch)

画面上で発生したタッチの位置、サイズ、動き、力を表すオブジェクト用クラス。

### Button Presses

#### [UIPress](https://developer.apple.com/documentation/uikit/uipress)

特定のイベントに対する画面上のボタン押下の存在または動きを表すオブジェクト用クラス。

#### [UIPressesEvent](https://developer.apple.com/documentation/uikit/uipressesevent)

デバイスへ接続済みで使用可能な一連のコントローラーなどの物理ボタンの状態を説明するイベント。

### UIKit Gestures

#### [UILongPressGestureRecognizer](https://developer.apple.com/documentation/uikit/uilongpressgesturerecognizer)

長押しジェスチャーを検知した際に情報を保持するオブジェクト用クラス。

#### [UIPanGestureRecognizer](https://developer.apple.com/documentation/uikit/uipangesturerecognizer)

パン(ドラッグ)ジェスチャーを検知した際に情報を保持するオブジェクト用クラス。

#### [UIPinchGestureRecognizer](https://developer.apple.com/documentation/uikit/uipinchgesturerecognizer)

2本指でつまむようなジェスチャーを検知した際に情報を保持するオブジェクト用クラス。

#### [UIScreenEdgePanGestureRecognizer](https://developer.apple.com/documentation/uikit/uiscreenedgepangesturerecognizer)

画面の端から始まるパン(ドラッグ)ジェスチャーを検知した際に情報を保持するオブジェクト用クラス。

#### [UISwipeGestureRecognizer](https://developer.apple.com/documentation/uikit/uiswipegesturerecognizer)

スワイプジェスチャーを検知した際に情報を保持するオブジェクト用クラス。

#### [UIRotationGestureRecognizer](https://developer.apple.com/documentation/uikit/uirotationgesturerecognizer)

ビューを回転させる動作を検知した際に情報を保持するオブジェクト用クラス。

#### [UITapGestureRecognizer](https://developer.apple.com/documentation/uikit/uitapgesturerecognizer)

タップ動作を検知した際に情報を保持するオブジェクト用クラス。

## [Drag and Drop](https://developer.apple.com/documentation/uikit/drag_and_drop)

### Drag-and-Drop Interactions

#### [UIDragInteraction](https://developer.apple.com/documentation/uikit/uidraginteraction)

ビューからアイテムをドラッグできるようにするクラス。

#### [UIDropInteraction](https://developer.apple.com/documentation/uikit/uidropinteraction)

ビューへアイテムをドロップできるようにするクラス。

### Spring-Loaded Interactions

#### [UISpringLoadedInteraction](https://developer.apple.com/documentation/uikit/uispringloadedinteraction)

ドラッグ操作中にユーザーが操作するナビゲーションを構成および制御するためのクラス。

### Drag Sources

#### [UIDragItem](https://developer.apple.com/documentation/uikit/uidragitem)

ドラッグ中の要素を取り扱うクラス。

### Drop Destinations

#### [UIDropProposal](https://developer.apple.com/documentation/uikit/uidropproposal)

ドロップ時の動作を設定するクラス。

### Item Providers

#### [NSItemProvider](https://developer.apple.com/documentation/foundation/nsitemprovider)

ドラッグアンドドロップまたはコピー/貼り付け操作中、またはアプリ拡張機能へのプロセス間でデータまたはファイルを転送するためのアイテムプロバイダクラス。

### Pasteboard Support

#### [UIPasteConfiguration](https://developer.apple.com/documentation/uikit/uipasteconfiguration)

貼り付け、ドラッグアンドドロップ操作のために受け入れる型を指定するのにオブジェクトが実装するクラス。

### Custom Drag Item Previews

#### [UIDragPreviewParameters](https://developer.apple.com/documentation/uikit/uidragpreviewparameters)

ドラッグしている要素のプレビューを調整するクラス。

#### [UIDragPreview](https://developer.apple.com/documentation/uikit/uidragpreview)

ドラッグしている要素のプレビューを取り扱うクラス。

#### [UIDragPreviewTarget](https://developer.apple.com/documentation/uikit/uidragpreviewtarget)

ドロップを完了した際、またはドラッグ操作をキャンセルしたときにシステムで使用されるアイテムプレビューの送信先を取り扱うクラス。

## [Pencil Interactions](https://developer.apple.com/documentation/uikit/pencil_interactions)

### Interactions

#### [UIPencilInteraction](https://developer.apple.com/documentation/uikit/uipencilinteraction)

ApplePencilをダブルタップした際の通知を受け取ることができるオブジェクト用クラス。

## [Focus-based Navigation](https://developer.apple.com/documentation/uikit/focus-based_navigation)

### Focus Interactions

#### [UIFocusSystem](https://developer.apple.com/documentation/uikit/uifocussystem)

アプリのオブジェクトのフォーカス関連の状態を取得するのに使用するクラス。

#### [UIFocusUpdateContext](https://developer.apple.com/documentation/uikit/uifocusupdatecontext)

フォーカス情報の更新に関する情報を取り扱うクラス。

#### [UIFocusMovementHint](https://developer.apple.com/documentation/uikit/uifocusmovementhint)

フォーカスが当たっている要素の移動ヒント情報を提供するクラス。

### Focus Guides

#### [UIFocusGuide](https://developer.apple.com/documentation/uikit/uifocusguide)

通常フォーカスできないビューをフォーカス可能として公開するオブジェクト用クラス。

### Debugging Support

#### [UIFocusDebugger](https://developer.apple.com/documentation/uikit/uifocusdebugger)

フォーカス処理のデバッグを行うためのクラス。

### Animations
#### [UIFocusAnimationCoordinator](https://developer.apple.com/documentation/uikit/uifocusanimationcoordinator)

フォーカス更新中のフォーカス関連アニメーションのコーディネーター用クラス。

## [Peek and Pop](https://developer.apple.com/documentation/uikit/peek_and_pop)

### Previews

#### [UIPreviewAction](https://developer.apple.com/documentation/uikit/uipreviewaction)

プレビューアクション、またはピーククイックアクションを取り扱うクラス。

#### [UIPreviewActionGroup](https://developer.apple.com/documentation/uikit/uipreviewactiongroup)

1つ以上の子クイックアクションのグループを取り扱うクラス。

#### [UIPreviewInteraction](https://developer.apple.com/documentation/uikit/uipreviewinteraction)

Force Touchに応答するビューを登録するクラス。

### Home Screen

#### [UIApplicationShortcutIcon](https://developer.apple.com/documentation/uikit/uiapplicationshortcuticon)

オプションでホーム画面のクイックアクションに関連付ける機能を提供するクラス。

#### [UIApplicationShortcutItem](https://developer.apple.com/documentation/uikit/uiapplicationshortcuticon)

アプリケーションのショートカット項目を取り扱うクラス。

#### [UIMutableApplicationShortcutItem](https://developer.apple.com/documentation/uikit/uimutableapplicationshortcutitem)

アプリに対して設定可能なユーザー起動アクションを指定する要素を取り扱うクラス。

## [Keyboard and Menus](https://developer.apple.com/documentation/uikit/keyboard_and_menus)

### Keyboard

#### [UIKeyCommand](https://developer.apple.com/documentation/uikit/uikeycommand)

ハードウェアキーボードで実行されたキーの押下と、その結果として生じるべきアクションを指定するオブジェクト用クラス。

### Menus

#### [UIMenuController](https://developer.apple.com/documentation/uikit/uimenucontroller)

切り取り、コピー、貼り付け、選択、すべて選択、および削除の各コマンドのメニューインタフェース。

#### [UIMenuItem](https://developer.apple.com/documentation/uikit/uimenuitem)

UIMenuControllerオブジェクトによって管理される編集メニュー内のカスタム項目用クラス。

### Custom Input

#### [UIInputView](https://developer.apple.com/documentation/uikit/uiinputview)

ビューが最初のレスポンダになったときに、そのビューに対するカスタム入力を表示および管理するオブジェクト用クラス。

## [Accessibility](https://developer.apple.com/documentation/uikit/accessibility)

### Actions

#### [UIAccessibilityCustomAction](https://developer.apple.com/documentation/uikit/uiaccessibilitycustomaction)

アクセス可能なオブジェクトに対して実行されるカスタムアクション用クラス。

### Navigation

#### [UIAccessibilityCustomRotor](https://developer.apple.com/documentation/uikit/uiaccessibilitycustomrotor)

Voice Overユーザーが関連要素の次のインスタンスを見つけるのに役立つ機能を提供するクラス。

#### [UIAccessibilityCustomRotorItemResult](https://developer.apple.com/documentation/uikit/uiaccessibilitycustomrotoritemresult)

UIAccessibilityCustomRotorによって参照されるターゲット要素オブジェクト用クラス。

#### [UIAccessibilityCustomRotorSearchPredicate](https://developer.apple.com/documentation/uikit/uiaccessibilitycustomrotorsearchpredicate)

次に一致するUIAccessibilityCustomRotorの移動先を決定するのに役立つ検索パラメーターオブジェクト用クラス。

### Drag and Drop Support

#### [UIAccessibilityLocationDescriptor](https://developer.apple.com/documentation/uikit/uiaccessibilitylocationdescriptor)

ビュー内のドラッグ＆ドロップについて補助する要素について取り扱うクラス。

# Graphics, Drawing, and Printing

## [Images and PDF](https://developer.apple.com/documentation/uikit/images_and_pdf)

### Representations

ビットマップやPDFを取り扱うためのクラスとメソッド群。

#### [UIImage](https://developer.apple.com/documentation/uikit/uiimage)

画像をアプリで使用するためのクラス。

## [Drawing](https://developer.apple.com/documentation/uikit/drawing)

### Drawing Contexts

#### [UIGraphicsRenderer](https://developer.apple.com/documentation/uikit/uigraphicsrenderer)

2Dのグラフィックレンダリングを行うクラス。

#### [UIGraphicsRendererContext](https://developer.apple.com/documentation/uikit/uigraphicsrenderercontext)

UIGraphicsRendererの描画設定用のクラス。
範囲いっぱいに描画するか、線をつけるかなど。

#### [UIGraphicsRendererFormat](https://developer.apple.com/documentation/uikit/uigraphicsrendererformat)

UIGraphicsRendererの一連の描画属性。
使用デバイスにとって最適な描画設定を返却する処理も提供。

#### [UIGraphicsImageRenderer](https://developer.apple.com/documentation/uikit/uigraphicsimagerenderer)

画像のグラフィックレンダリング用のUIGraphicsRenderer子クラス。

#### [UIGraphicsImageRendererContext](https://developer.apple.com/documentation/uikit/uigraphicsimagerenderercontext)

UIGraphicsRendererContextの画像向け。

#### [UIGraphicsImageRendererFormat](https://developer.apple.com/documentation/uikit/uigraphicsimagerendererformat)

UIGraphicsRendererFormatの画像向け。

#### [UIGraphicsPDFRenderer](https://developer.apple.com/documentation/uikit/uigraphicspdfrenderer)

PDFのグラフィックレンダリング用のUIGraphicsRenderer子クラス。

#### [UIGraphicsPDFRendererContext](https://developer.apple.com/documentation/uikit/uigraphicspdfrenderercontext)

UIGraphicsRendererContextのPDF向け。

#### [UIGraphicsPDFRendererFormat](https://developer.apple.com/documentation/uikit/uigraphicspdfrendererformat)

UIGraphicsRendererFormatのPDF向け。

### Color

#### [UIColor](https://developer.apple.com/documentation/uikit/uicolor)

アプリで表示する色を取り扱うクラス。

### Paths

#### [UIBezierPath](https://developer.apple.com/documentation/uikit/uibezierpath)

画面上へレンダリングする直線や曲線を取り扱うためのクラス。

### Strings

#### [NSStringDrawingContext](https://developer.apple.com/documentation/uikit/nsstringdrawingcontext)

斜め書体や打ち消し線など、細かい文字描画を設定するクラス。

### Shadows

#### [NSShadow](https://developer.apple.com/documentation/uikit/nsshadow)

描画処理する際のドロップシャドウを取り扱うクラス。

## [Printing](https://developer.apple.com/documentation/uikit/printing)

### Print Panels
#### [UIPrintInteractionController](https://developer.apple.com/documentation/uikit/uiprintinteractioncontroller)

印刷可能なコンテンツ全般を管理するUIクラス。

#### [UIPrinterPickerController](https://developer.apple.com/documentation/uikit/uiprinterpickercontroller)

印刷する情報を送信するプリンタを選択するiOSの標準UIクラス。

### Renderer

#### [UIPrintPageRenderer](https://developer.apple.com/documentation/uikit/uiprintpagerenderer)

### Job Info

#### [UIPrinter](https://developer.apple.com/documentation/uikit/uiprinter)

接続先ネットワークに存在するプリンタオブジェクトのクラス。

#### [UIPrintInfo](https://developer.apple.com/documentation/uikit/uiprintinfo)

印刷ジョブに関する情報を取り扱うクラス。

#### [UIPrintPaper](https://developer.apple.com/documentation/uikit/uiprintpaper)

印刷ジョブで使用する用紙サイズなどの情報を含む印刷情報。

### Formatters

#### [UIPrintFormatter](https://developer.apple.com/documentation/uikit/uiprintformatter)

印刷時にページ境界をまたぐレイアウトをカスタマイズできるクラス。

#### [UIViewPrintFormatter](https://developer.apple.com/documentation/uikit/uiviewprintformatter)

UIPrintFormatterの子クラスで、UIView単位でカスタマイズできるクラス。

#### [UISimpleTextPrintFormatter](https://developer.apple.com/documentation/uikit/uisimpletextprintformatter)

印刷用のプレーンテキストをレイアウトするためのオブジェクト用クラス。

#### [UIMarkupTextPrintFormatter](https://developer.apple.com/documentation/uikit/uimarkuptextprintformatter)

HTMLを印刷向けにレイアウトするためのオブジェクト用クラス。


# Text

## [Text Display and Fonts](https://developer.apple.com/documentation/uikit/text_display_and_fonts)

### Layout

#### [NSLayoutManager](https://developer.apple.com/documentation/uikit/nslayoutmanager)

NSTextStorageオブジェクトに保持されている文字の下線や取り消し線についてなどのレイアウトを保持するためのオブジェクト用クラス。

### Text Views

#### [UILabel](https://developer.apple.com/documentation/uikit/uilabel)

1行以上の読み取り専用のテキストを表示するためのクラス。
押下可能な要素などの簡単な説明に使われることを想定している。

#### [UITextField](https://developer.apple.com/documentation/uikit/uitextfield)

テキストの編集可能なフィールドを提供するためのクラス。

#### [UITextView](https://developer.apple.com/documentation/uikit/uitextview)

複数行以上、かつスクロール可能なテキストを表示するためのクラス。
読み書きどちらもOKに設定することが可能。

#### [UIFont](https://developer.apple.com/documentation/uikit/uifont)

テキストのフォント設定オブジェクトのクラス。

#### [UIFontDescriptor](https://developer.apple.com/documentation/uikit/uifontdescriptor)

テキストの一部フォント設定を変更したり、1文字1文字細かくカスタマイズする際に使用するクラス。

#### [UIFontMetrics](https://developer.apple.com/documentation/uikit/uifontmetrics)

アプリ独自のフォント(Familyに当たる)を設定する際に使用するクラス。

### Spell Checking

#### [UITextChecker](https://developer.apple.com/documentation/uikit/uitextchecker)

スペルミスのチェックに使用するクラス。

## [Text Storage](https://developer.apple.com/documentation/uikit/text_storage)

### Data

#### [NSTextStorage](https://developer.apple.com/documentation/uikit/nstextstorage)

TextKitベースに表示文字列をあれこれカスタマイズする際に使用する入れ物用のクラス。

#### [NSTextContainer](https://developer.apple.com/documentation/uikit/nstextcontainer)

文字列が表示されている領域を表現するクラス。

#### [NSAttributedString](https://developer.apple.com/documentation/foundation/nsattributedstring)

ハイパーリンクやアクセシビリティなどの属性情報を保持できる文字列クラス。

#### [UITextPosition](https://developer.apple.com/documentation/uikit/uitextposition)

テキスト入力フィールド内のカーソル位置を取り扱うクラス。

#### [UITextRange](https://developer.apple.com/documentation/uikit/uitextrange)

テキスト入力フィールド内の文字列の開始〜終了インデックスを取り扱うクラス。

#### [UITextSelectionRect](https://developer.apple.com/documentation/uikit/uitextselectionrect)

テキスト入力フィールド内の文字列の選択範囲開始〜終了インデックスを取り扱うクラス。

### Paragraphs

#### [NSParagraphStyle](https://developer.apple.com/documentation/uikit/nsparagraphstyle)

属性付きの文字列で使用する段落やルーラー情報を取り扱うクラス。

#### [NSMutableParagraphStyle](https://developer.apple.com/documentation/uikit/nsmutableparagraphstyle)

属性付きの文字列で使用する段落などのサブ属性も取り扱うクラス。

#### [NSTextTab](https://developer.apple.com/documentation/uikit/nstexttab)

NSParagraphStyleのタブを取り扱うクラス。
NSRulerViewやNSRulerMarkerと取り扱うことが圧倒的に多いとのこと。

#### [NSTextAttachment](https://developer.apple.com/documentation/uikit/nstextattachment)

添付ファイル属性を内包する文字列を取り扱うクラス。

## [Keyboards and Input](https://developer.apple.com/documentation/uikit/keyboards_and_input)

### Configuration

#### [UITextInputAssistantItem](https://developer.apple.com/documentation/uikit/uitextinputassistantitem)

iPadのキーボード上に表示されるショートカットバーに表示されるボタンのクラス。

### Input

#### [UITextInputMode](https://developer.apple.com/documentation/uikit/uitextinputmode)

テキストの入力モードを取り扱うクラス。数字・英字・日本語など。

#### [UITextInputStringTokenizer](https://developer.apple.com/documentation/uikit/uitextinputstringtokenizer)

テキスト入力フィールドを自前でカスタマイズしたものを作成する際に使用するクラス。

#### [UIDictationPhrase](https://developer.apple.com/documentation/uikit/uidictationphrase)

音声認識などで解析した音声にて認識できた文字列を格納するクラス。

### Custom Keyboard

#### [UIInputViewController](https://developer.apple.com/documentation/uikit/uiinputviewcontroller)

キーボードをカスタマイズを取り扱うクラス。

#### [UILexicon](https://developer.apple.com/documentation/uikit/uilexicon)

カスタマイズキーボードで使用する過去の入力結果からの予測変換候補用語集を読み取るためのクラス。

#### [UILexiconEntry](https://developer.apple.com/documentation/uikit/uilexiconentry)

カスタマイズキーボードで使用する辞書からの予測変換候補用語集を読み取るためのクラス。

# さいごに
OS標準でできるか否かより、コストがかかってもお客さんの要望を叶えられるか否かに沿って調査やら開発の経験値を積むことが多かった都合でOS標準の仕様の把握を後回しにしていた結果のツケをひしひしと感じるようになり、一度上からさらえてみようかなと思い立った次第です。

クラスに焦点を絞って使ったことのないクラスを見つけたらドキュメント眺めて使い方を別途さらっと探してみて・・・とやってみたものの、今回除いたプロトコルやメソッドについてもあれこれ把握する必要がありそうな予感がひしひしとします。

今後、ここの一覧をもとにして1カテゴリ1〜数記事単位くらいを目安にまとめつつドキュメントの熟読を進めたいです。