Edited at

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

こちらはiOS(その2) Advent Calendarの24日目の記事です。


はじめに

公式ドキュメントをぱっと見ただけだと、具体的になんのクラスが存在してて何に使えるかは各リンク先を参照しないと見ることができない。

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


App Structure


Core App

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


Application


UIAplication

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


Device Environment


UIDevice

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


UITraitCollection

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


Documents

ドキュメントベースアプリケーションを作成するために使用するクラス群。


UIDocument

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


UIManagedDocument

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


Pasteboard


UIPasteboard

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


UIPasteConfiguration

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


User Activities


NSUserActivity

自分のアプリがバックグラウンドへ移動された際などに作成でき、アプリに復帰したタイミングでデータの復元をする目的で使用するクラス。

また、Spotlightの検索精度の向上にも使用。

小さな変更や編集に対しては使用せず、ユーザが後でまたは他デバイスでも続行したい可能性がある箇所で使用しなさい、とのこと。


Services


UIActivity

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


UIActivityViewController

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


UIActivityItemProvider

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


Resource Management


Storyboards


UIStoryboard

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


UIStoryboardSegue

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


UIStoryboardUnwindSegueSource

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


Assets


UIImageAsset

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


NSDataAsset

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


Nib Files


UINib

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


App Extensions


Extension Support


NSExtensionContext

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


Document Provider


UIDocumentPickerExtensionViewController

UIDocumentPickerViewControllerの標準UIなファイル選択画面の拡張機能を取り扱うクラス。

この画面単独でインポート・エクスポートなどが可能で、選択時のフォルダ移動などを細かくカスタマイズも可能。


NSFileProviderExtension

ファイルプロバイダの拡張クラス。

外アプリから自分のアプリのコンテンツへアクセス可能にしたい際に使用。


User Interface


Views and Controls


View Fundamentals


UIView

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


Container Views


UIStackView

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


UIScrollView

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


Content Views


UIActivityIndicatorView

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


UIImageView

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


UIPickerView

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


UIProgressView

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


Controls


UIControl

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


UIButton

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


UIDatePicker

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


UIPageControl

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


UISegmentedControl

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


UISlider

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


UIStepper

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


UISwitch

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


Visual Effects


UIVisualEffect

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


UIVisualEffectView

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


UIVibrancyEffect

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


UIBlurEffect

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


Bars


UIBarItem

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


UIBarButtonItem

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


UIBarButtonItemGroup

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


UINavigationBar

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


UISearchBar

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


UIToolbar

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


UITabBar

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


UITabBarItem

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


View Controllers


Custom View Controllers


UIViewController

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


UITableViewController

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


UICollectionViewController

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


Split View Interface


UISplitViewController

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


Navigation Interface


UINavigationController

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


Page View Interface


UIPageViewController

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


Tab View Interface


UITabBarController

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


Search Interface


UISearchContainerViewController

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


UISearchController

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


Images and Video


UIImagePickerController

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


UIVideoEditorController

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


Document Browser


UIDocumentBrowserViewController

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


UIDocumentPickerViewController

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


Document Previewing


UIDocumentInteractionController

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


iCloud Sharing


UICloudSharingController

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


Word Lookup


UIReferenceLibraryViewController

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


Presentation Controllers


UIPresentationController

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


View Layout


Layout Guides


UILayoutGuide

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


NSLayoutDimension

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


Anchors


NSLayoutAnchor

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


NSLayoutXAxisAnchor

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


NSLayoutYAxisAnchor

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


Animation and Haptics


Haptic Feedback


UIFeedbackGenerator

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


UIImpactFeedbackGenerator

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


UINotificationFeedbackGenerator

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


UISelectionFeedbackGenerator

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


Windows and Screens


Windows


UIWindow

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


Popovers


UIPopoverPresentationController

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


UIPopoverBackgroundView

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


Alerts


UIAlertController

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


UIAlertAction

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


Screens


UIScreen

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


UIScreenMode

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


User Interactions


Touches, Presses, and Gestures


First Steps


UIResponder

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


UIEvent

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


Touches


UITouch

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


Button Presses


UIPress

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


UIPressesEvent

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


UIKit Gestures


UILongPressGestureRecognizer

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


UIPanGestureRecognizer

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


UIPinchGestureRecognizer

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


UIScreenEdgePanGestureRecognizer

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


UISwipeGestureRecognizer

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


UIRotationGestureRecognizer

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


UITapGestureRecognizer

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


Drag and Drop


Drag-and-Drop Interactions


UIDragInteraction

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


UIDropInteraction

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


Spring-Loaded Interactions


UISpringLoadedInteraction

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


Drag Sources


UIDragItem

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


Drop Destinations


UIDropProposal

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


Item Providers


NSItemProvider

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


Pasteboard Support


UIPasteConfiguration

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


Custom Drag Item Previews


UIDragPreviewParameters

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


UIDragPreview

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


UIDragPreviewTarget

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


Pencil Interactions


Interactions


UIPencilInteraction

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


Focus-based Navigation


Focus Interactions


UIFocusSystem

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


UIFocusUpdateContext

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


UIFocusMovementHint

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


Focus Guides


UIFocusGuide

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


Debugging Support


UIFocusDebugger

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


Animations


UIFocusAnimationCoordinator

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


Peek and Pop


Previews


UIPreviewAction

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


UIPreviewActionGroup

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


UIPreviewInteraction

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


Home Screen


UIApplicationShortcutIcon

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


UIApplicationShortcutItem

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


UIMutableApplicationShortcutItem

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


Keyboard and Menus


Keyboard


UIKeyCommand

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


Menus


UIMenuController

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


UIMenuItem

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


Custom Input


UIInputView

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


Accessibility


Actions


UIAccessibilityCustomAction

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


Navigation


UIAccessibilityCustomRotor

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


UIAccessibilityCustomRotorItemResult

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


UIAccessibilityCustomRotorSearchPredicate

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


Drag and Drop Support


UIAccessibilityLocationDescriptor

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


Graphics, Drawing, and Printing


Images and PDF


Representations

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


UIImage

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


Drawing


Drawing Contexts


UIGraphicsRenderer

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


UIGraphicsRendererContext

UIGraphicsRendererの描画設定用のクラス。

範囲いっぱいに描画するか、線をつけるかなど。


UIGraphicsRendererFormat

UIGraphicsRendererの一連の描画属性。

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


UIGraphicsImageRenderer

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


UIGraphicsImageRendererContext

UIGraphicsRendererContextの画像向け。


UIGraphicsImageRendererFormat

UIGraphicsRendererFormatの画像向け。


UIGraphicsPDFRenderer

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


UIGraphicsPDFRendererContext

UIGraphicsRendererContextのPDF向け。


UIGraphicsPDFRendererFormat

UIGraphicsRendererFormatのPDF向け。


Color


UIColor

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


Paths


UIBezierPath

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


Strings


NSStringDrawingContext

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


Shadows


NSShadow

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


Printing


Print Panels


UIPrintInteractionController

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


UIPrinterPickerController

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


Renderer


UIPrintPageRenderer


Job Info


UIPrinter

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


UIPrintInfo

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


UIPrintPaper

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


Formatters


UIPrintFormatter

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


UIViewPrintFormatter

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


UISimpleTextPrintFormatter

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


UIMarkupTextPrintFormatter

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


Text


Text Display and Fonts


Layout


NSLayoutManager

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


Text Views


UILabel

1行以上の読み取り専用のテキストを表示するためのクラス。

押下可能な要素などの簡単な説明に使われることを想定している。


UITextField

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


UITextView

複数行以上、かつスクロール可能なテキストを表示するためのクラス。

読み書きどちらもOKに設定することが可能。


UIFont

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


UIFontDescriptor

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


UIFontMetrics

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


Spell Checking


UITextChecker

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


Text Storage


Data


NSTextStorage

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


NSTextContainer

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


NSAttributedString

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


UITextPosition

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


UITextRange

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


UITextSelectionRect

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


Paragraphs


NSParagraphStyle

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


NSMutableParagraphStyle

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


NSTextTab

NSParagraphStyleのタブを取り扱うクラス。

NSRulerViewやNSRulerMarkerと取り扱うことが圧倒的に多いとのこと。


NSTextAttachment

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


Keyboards and Input


Configuration


UITextInputAssistantItem

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


Input


UITextInputMode

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


UITextInputStringTokenizer

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


UIDictationPhrase

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


Custom Keyboard


UIInputViewController

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


UILexicon

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


UILexiconEntry

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


さいごに

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

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

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