Xcode　全パーツ特徴まとめ　アプリ開発勉強(Swift4)

<img width="74" alt="スクリーンショット 2019-06-03 11.51.35.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/d5887d80-2762-6195-69d5-7c29d748b6c7.png">：「Label」
サイズ変更可能なの静止テキスト。
<img width="74" alt="スクリーンショット 2019-06-03 11.51.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/b81423bd-3c0d-425e-61b5-2f90ce1d0d40.png">：「Button」
タップボタン。タップされた時にそのオブジェクトのアクションを起こす。
<img width="74" alt="スクリーンショット 2019-06-03 11.52.04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/01268dcb-6b51-20af-2c5b-8e8b72624a89.png">：「Segmented Control」
それぞれ個別のボタンとして機能する。
<img width="74" alt="スクリーンショット 2019-06-03 11.52.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/c9c2d3f6-2388-2cf3-66c0-3cc154aadab9.png">：「Text Field」
タップしたときに文字を入力できる。
<img width="74" alt="スクリーンショット 2019-06-03 11.52.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/c6e94342-5167-5b7d-ffdd-695f8b759eec.png">：「Slider」
スライダーの表示、値の範囲。
<img width="74" alt="スクリーンショット 2019-06-03 11.52.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/be5d0f9c-4703-e797-f858-dedc7ab62d5d.png">：「Swirch」
スイッチ。コントロールのタップして値を切り替える。
<img width="73" alt="スクリーンショット 2019-06-03 13.15.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/6bd723c5-4160-0ad9-4e26-ba36ee9f868f.png">：「Activity Indicator View」
不明な期間のタスクまたはプロセスの進行状況に関するフィードバックを提出する。ロード中に使うクルクル
<img width="75" alt="スクリーンショット 2019-06-03 13.15.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/3c9f3e6f-8ec4-ec70-86d0-eb74522943d2.png">：「Progress View」
進行状況の表示時間の経過に伴うタスクの進行状況を表示する。
<img width="75" alt="スクリーンショット 2019-06-03 13.16.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/5068f65e-4d43-c9a4-2fef-8e19d4ba0ba0.png">：「Page Control」
複数画面にまたがるページの現在の位置を表示し、移動をサポートしてくれる部品。
<img width="75" alt="スクリーンショット 2019-06-03 13.16.18.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/f3cd26a0-c73f-4eef-ab27-e0f489921b51.png">：「Stepper」
プラスボタン(+)とマイナスボタン(-)で値の増減を管理するボタンである。
<img width="75" alt="スクリーンショット 2019-06-03 13.16.25.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/4ab42be7-01c6-05aa-0e0f-3a067901ca58.png">：「Horizontal Stack View」
横（水平方向）に並んだサブビューを持たせ、管理します。
<img width="75" alt="スクリーンショット 2019-06-03 13.16.32.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/b4beec6c-691e-8060-09eb-db7facf85508.png">：「Vertical Stack View」
縦（垂直方向に並んだサブビューを持たせ、管理します。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.19.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/d7c5b5f1-cf1a-0758-4c0d-bc630917cfab.png">：「Table View」
配列などで格納されたデータをリストとして画面に表示したい場合に使います。セルを使用するには、UITableViewCellを使用。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/c037ffe1-6e16-8093-8d11-a6f8d1a38377.png">：「Table View Cell」
Table Viewを選択するとそのCellの画像が画面に表示される。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/690c2af4-3791-926e-fbab-70dde7910d57.png">：「Image View」
単一の画像、または画像配列で表示されたアニメーションのを表示する。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/71193040-ba19-b821-cb5a-6cfdd67afa2a.png">：「Collection View」
画像をマス目に配置する。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/ac23d738-dd30-30b6-6a2f-57ca3d76e04a.png">：「Collection View Cell」
Collection Viewと一緒に使うセル。
<img width="74" alt="スクリーンショット 2019-06-03 14.15.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/85b4b965-3618-fabf-b9d6-b2adbcbc7c1a.png">：「Collection Reusable View」
セクションを表示するための部品。
<img width="65" alt="スクリーンショット 2019-06-03 15.26.57.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/f10c595f-1eb7-e0ce-ac55-bef0bde45eb5.png">：「Text View」
ホイールを回してデータを選択する部品である。
<img width="60" alt="スクリーンショット 2019-06-03 15.27.34.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/01245999-c405-aa06-b0f3-97aa0a453d97.png">：「Scroll View」
自分より大きい部品をスクロールして見ることができるビューである。
スクロールはフリック操作で行う。
<img width="72" alt="スクリーンショット 2019-06-04 9.38.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/58a25258-86dc-4d40-c9c7-b283d9d8d0ce.png">:「Date Picker」
ホイールを回して時刻や日付を設定するための部品である。
iOSの時間設定にも使われている。
<img width="59" alt="スクリーンショット 2019-06-04 9.39.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/4ab69cff-c57c-ad15-222a-b5b1c899c03e.png">:「Picker View」
リストから項目を選択する。
<img width="59" alt="スクリーンショット 2019-06-04 9.39.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/ff4b3c3d-4923-b33d-decf-4068589ed049.png">：「Visual Effect View with Blur」
中の部品が曇りガラスのようになる入れ物である。ブラーエフェクトは1枚の曇りガラスを置くイメージ。
<img width="59" alt="スクリーンショット 2019-06-04 9.39.30.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/a9a588ea-6ac3-25c2-b271-861b6107d25b.png">：「Visual Effect View with Blur and Vibrancy」
バイブレンシーエフェクトは、中に入れた部品すべてが曇りガラスのようになる。
<img width="72" alt="スクリーンショット 2019-06-04 9.31.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/309be93c-826e-dca2-4d96-d4fdaf2241a1.png">：「Map Kit View」
地図を表示するために使う。
<img width="72" alt="スクリーンショット 2019-06-04 9.31.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/9765fa54-d8c9-9be5-5540-7ad46a1ca916.png">：「MetalKit View」
画像処理やデータ並列演算などを効率的に行うためのフレームワークです。
<img width="72" alt="スクリーンショット 2019-06-04 9.31.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/be6453a9-10b1-2988-7a7c-0c684cbd6cd6.png">：「GLKit　View」
OpenGL ES対応のデフォルト実装を提供。３Dのものなど
<img width="72" alt="スクリーンショット 2019-06-04 9.31.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/ed9b22d6-8ec3-4722-8aad-2c70a61d6b14.png">：「SceneKit View」
3Dゲームを手軽に作れるフレームワーク。
<img width="72" alt="スクリーンショット 2019-06-04 9.31.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/23dd960d-2037-465b-25f8-206d05e09a8f.png">：「SpriteKit View」
2Dゲーム用フレームワークである。
<img width="74" alt="スクリーンショット 2019-06-04 13.42.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/94fab9fd-e9f5-f56c-aec0-f24cb8af0965.png">：「ARKit SceneKit View」
ARでで3Dモデルを読込み＆表示。
<img width="68" alt="スクリーンショット 2019-06-04 13.43.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/ed9705f3-5a11-7297-b5aa-28dbb8c85699.png">：「ARKit SpriteKit View」
ARで2Dモデルを読込み＆表示。
<img width="68" alt="スクリーンショット 2019-06-04 13.43.29.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/a3494c59-7394-e3ed-61fe-923bf03d6ba3.png">：「Web View （deprecated）」
指定したURLのWebページを読み込んで表示するUIパーツです。
<img width="68" alt="スクリーンショット 2019-06-04 13.43.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/66b42912-c761-54bd-8fc1-9b7f8984d93b.png">：「WebKit View」
Webコンテンツをアプリに埋め込むことができます。
<img width="68" alt="スクリーンショット 2019-06-04 13.43.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/c9e8f924-9285-a779-9c36-3e9c4068c9ff.png">：「View」
Viewを管理・操作(表示・非表示・配置・アニメーションなど)をする役割をもつ。
<img width="68" alt="スクリーンショット 2019-06-04 13.43.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/fb43c5c6-06f3-f786-8c23-fca035b7ad4c.png">：「Container View」
Viewの中にさらにviewを入れ込む事のできる。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.06.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/1749f295-fc65-2ce6-ba35-e11002a245c6.png">：「Navigation Bar」
画面タイトルやページ移動のボタンを表示するために使われる入れ物である。例えば、iOSの設定画面の上部に表示されていて、ボタンを押せば前のページに戻ることができる。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.17.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/aecb34fc-90c3-53c9-5d23-7392e6af8e18.png">：「Navigation Item」
Navigation Bar（以下、ナビゲーションバー）に表示するタイトルやボタンを管理する部品である。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.28.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/0a572276-3c53-b2e0-ecf5-8aec51ca5f22.png">：「Toolbar」
補助的な機能を持ったボタン（UIToolbarButtonItems）を配置するために使われるパーツです。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/8b0c94f0-261c-ea87-ff09-ea460b6e4994.png">：「Bar Button Item」
ナビゲーションバーやツールバーの中に並べるボタンやスペースの部品のことである。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.47.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/81f1906a-ebcc-d4d7-a9c8-7b71c4773f01.png">：「Tab Bar」
画面を切り替えるボタンを並べるためのバーである。
ツールバーでも似たようなことができるが、タブバーを使うと選択中のボタンの色を変えたり、ボタンの角にバッチを表示したりを作り込みせずに実装できるのが嬉しい。
<img width="72" alt="スクリーンショット 2019-06-04 14.23.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/3157deec-68e6-a18d-8ef2-eece1a2d1f80.png">：「Tab Bar Item」
Tab Bar（以下、タブバー）に配置するボタンやタイトルを持つ部品のことである。
Tab Bar Controllerを使う場合、1つのビューコントローラーにつき1つのタブバーアイテムが割り当たる。
<img width="72" alt="スクリーンショット 2019-06-04 14.46.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/979ac0f8-6606-148e-d171-5127c16a87c9.png">：「Search Bar」
検索文字列を入力するために使われるテキストフィールドである。UITextFieldでも同じようなことができるが、サーチバーを使うとブックマークボタンや絞り込み検索を行うためのスコープバーなど、検索の補助機能が使えるので便利。
iOSの設定画面にサーチバーがあり、設定項目を検索できるようになっている。
<img width="72" alt="スクリーンショット 2019-06-04 14.46.55.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/172df86c-2edd-0f84-2b85-70d5b8ec114e.png">：「Search Bar and Search Display Controller」
テキスト入力用のテキストフィールド、検索ボタン、ブックマークボタン、およびキャンセルボタンが用意されている。ストーリーボードでViewに挿入すると検索ディスプレイコントローラーへの適切な接続を自動的にしてくれる
<img width="72" alt="スクリーンショット 2019-06-04 14.47.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/648b8d6d-2b20-06dd-0f47-c7133ad2a0c4.png">：「Fixed Space Bar Button Item」
アイテム間の空きを調節する。
<img width="72" alt="スクリーンショット 2019-06-04 14.47.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/834fb86a-b7b5-bfb8-09a2-e957383b4775.png">：「Flexible Space Bar Button Item」
両サイドにアイテムを配置することができる。
<img width="72" alt="スクリーンショット 2019-06-04 14.47.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/20d17cbe-2bdd-0add-0e9e-8085f66cfed7.png">：「View Controller」
ViewControllerの追加できる。複数の画面。
<img width="72" alt="スクリーンショット 2019-06-04 14.47.26.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/8f0501db-9802-dc7f-2a20-6d913a9b2d62.png">：「Storyboard Reference」
Stroryboardを分割することができる機能。Storyboard全体の可視性向上 
5つのタブを把握する度に、いちいち縮小表示しなくて済む。
また画面数が増えた場合においても、可視性が維持できる。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/65a4b9cb-833d-1a32-ab1b-e45101c65740.png">：「Navigation Controller」
ページ上部にナビゲーションバーを表示し、複数画面を階層的に行ったり来たりできるようにする部品である。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/a5795196-0f20-2090-b97f-160cc1141bab.png">：「Table View Controller」
UICollectionView（以下、コレクションビュー）を管理するコントローラーである。
部品の配置はTable View Controllerに似ていて、ビューコントローラーは直下にViewが配置されているのに対し、コレクションビューコントローラーは直下にCollection View（以下、コレクションビュー）が配置されているのが特徴である。
そのため、コレクションビューコントローラーを使うと画面いっぱいにコレクションビューが表示される。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/cf7bda14-4788-c33a-8f12-5e82dbd55bbe.png">：「Collection View Controller」
コレクションビューの管理を専門とするView Controller。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/e38ceadf-a9fa-4620-ae2e-1cd2e9461ded.png">：「Tab Bar Controller」
複数画面と接続し、UITabBar（以下、タブバー）に並べられたボタンで画面の切り替えを行う部品である。
画面の追加削除が楽にできる。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/7013936b-4d86-a2f6-710a-19c1a10df6dc.png">：「Split View Controller」
画面を左（以下、マスター部）と右（以下、ディテール部）に分割し、マスター部の項目を選択するとディテール部に詳細が表示されるような仕組みを提供するコントローラーである。
<img width="70" alt="スクリーンショット 2019-06-05 15.31.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/b9a97b01-a521-f068-5ddf-f26e02dc0c24.png">：「Page View Controller」
めくる、または、ドラッグで画面を遷移させるコントローラーである。
セグエでも似たようなことができるが。ページビューコントローラーを使うと、セグエの定義やスワイプ検知を実装せずに簡単にビューコントローラーの切り替えを実装できるので便利。
アプリのマニュアルなど、外部データが不要な画面を連続して表示する場合などに活用できる。
<img width="70" alt="スクリーンショット 2019-06-05 16.24.49.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/ebf301d0-ec57-1f36-4dd2-209c71f70ab3.png">：「GLKit View Controller」
GLKit Viewを管理するコントローラー。
<img width="70" alt="スクリーンショット 2019-06-05 16.24.58.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/6e845669-3369-4891-202d-4110ca7c31db.png">：「AVKit Player View Controller」
音声や映像を再生することができます。
<img width="70" alt="スクリーンショット 2019-06-05 16.25.08.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/44906dca-660d-5d18-6b3d-a754e766ddbc.png">：「Object」
nterface Builderで直接利用できないオブジェクトとコントローラ用のテンプレートを提供します。
<img width="70" alt="スクリーンショット 2019-06-05 16.25.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/58d7c20d-aeb1-61e4-1feb-0dadc28e5506.png">：「Tap Gesture Recognizer」
タップしたときに対応する処理を設定する。
<img width="70" alt="スクリーンショット 2019-06-05 16.25.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/e65925a2-c8b2-deee-297a-7f236cd6f8b4.png">：「Pinch Gesture Recognizer」
部品を2つの指で摘んで外側に広げたとき、または、内側に狭めたときを検知する部品。
<img width="70" alt="スクリーンショット 2019-06-05 16.25.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/4b53c741-d142-4e55-845b-18539c444828.png">：「Rotation Gesture Recognizer」
部品をタッチしている2つの指の座標を結ぶ直線が回転したことを検知する部品。
<img width="73" alt="スクリーンショット 2019-06-06 16.36.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/b8b86f30-0bed-de20-c8ac-b85b18f679c0.png">：「Rotation Gesture Recognizer」
スワイプを検知する部品である。スワイプとは、画面に触れた指を上下左右いずれかの方向に素早く動かす動作のことをいう。
<img width="73" alt="スクリーンショット 2019-06-06 16.36.59.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/e3b4c447-4be8-7f86-e557-d4dbeb1f1cf2.png">：「Pan Gesture Recognizer」
ドラッグ&ドロップを検知する部品である。
スワイプリコグナイザーは素早く指を動かさなければ検知されないが、パンリコグナイザーはゆっくり指を動かしても検知され、元の位置からの移動量を正確に把握することができる。
<img width="73" alt="スクリーンショット 2019-06-06 16.37.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/7425b41d-a421-8257-d480-af2fd29c0a2c.png">：「Screen Edge Pan Gesture Recognizer」
画面端のドラッグを検知する部品である。
iOSの画面端から内側に向かってスワイプしたときにニョキッと現れる通知センターやコントロールセンターもスクリーンエッジリコグナイザーが使われている。
<img width="70" alt="スクリーンショット 2019-06-06 16.37.21.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/19a07a4c-6d19-c2ea-9112-ad1ee0f3510b.png">：「Long Press Gesture Recognizer」
長押しを検知する部品である。似ている部品のTap Gesture Recognizer（以下、タップリコグナイザー）は指が画面に触れただけで検知されるので誤タップが起きやすい。
一方、ロングプレスリコグナイザーは検知までに一定時間が必要なので誤タップが起きにくい。ゆえに、誤タップしそうな状況を回避するために利用させることが多い。
<img width="70" alt="スクリーンショット 2019-06-06 16.37.39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/425720/55494f26-0247-d094-80c9-7b6e982eeceb.png">：「Custom Gesture Recognizer」
組み込みのUIKitジェスチャーレコグナイザーが希望する動作を提供しない場合は、カスタムジェスチャーレコグナイザーを定義できます。UIKitは、タップ、長押し、パン、スワイプ、回転、およびピンチのタッチシーケンスを処理するための高度に設定可能なジェスチャ認識機能を定義します。他のタッチシーケンスの場合、またはボタンを押す操作を含むジェスチャを処理する場合は、カスタムジェスチャ認識機能を定義できます。


参考文献
はじはじアプリ体験
https://hajihaji-lemon.com/smartphone/
AppleDeveloper
https://developer.apple.com/