こちらは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〜数記事単位くらいを目安にまとめつつドキュメントの熟読を進めたいです。