iOS開発入門Objectsまとめ

botman_blue iOS

はじめに

Xcode 11.4 の Storyboard で表示される Objects についてまとめました。これでざっくり色々使えるはず!

github サンプルコード集

Widgets

ラベルとかボタンをウィジェットとしてまとめました。
基本的には IB で設定可能ですがコードで設定する場合の簡易実装も書いてます。

widgetd

Label

文字表示するだけのやつ。

簡易実装

Button

ボタンはこれのみチェックボックスやラジオボタンは自前で作る必要がある。
背景画像・テキスト・アイコンを設定できる。テキストとアイコンは UIControl.State.selected など状態毎に設定できる。

簡易実装

アクションは UIControl.Event.touchUpOutside など色々あるが touchUpInside しか使ったことない。。。

Segmented Control

タブのようなやつ。

簡易実装

insertSegment, removeSegment で動的に変更したりできる。

Text Field

テキストフィールド。イベントを受信したい場合はデリゲートを設定する。
細かい入力チェックをする場合は textField.addTarget(self, action: #selector(.didChangeText(_:)), for: .editingChanged) を設定してイベント取得する必要があるが正確にやろうと思うと色々めんどくさい。。。

デリゲート

Slider

スライダー。ステップ数を設定したい場合は自前で頑張る必要がある。

簡易実装

Switch

スイッチ!

簡易実装

Activity Indicator View

インジケーター。

簡易実装

Progress View

プログレスバー。タイマーとかで値を設定して使う。

Stepper

ステッパー。ステップ数毎に増減する値を管理するやつ。使ったことないけど便利かも。

簡易実装

Horizontal Stack View

横に View を並べる場合に便利。トルツメもしてくれる!

簡易実装

Vertical Stack View

縦に View を並べる場合に便利。トルツメもしてくれる!

簡易実装

Image View

画像を表示するためのやつ。

簡易実装

contentMode.scaleAspectFit にするとアスペクト比を保って拡大縮小してくれる。

Text View

改行できるテキストフィールド。中にリンクを入れることもできる。

簡易実装

デリゲート

プレースホルダーは自前で作る必要がある。。。

View

ただの View。
Xib ファイルを読み込む場合は下記のようにする。

Xib のファイル名は CustomView.xib とし File's Owner に CustomView を設定する。そうするとIBで Custom Class に CustomView を設定すると CustomView.xib が表示されるようになる。

Search Bar

検索バー。iOS 13 からは searchBar.searchTextField でテキストフィールドが取得できる。(value は禁止!)

デリゲート

iOS 13 から色々新機能があるみたい(参考

Pickers

ピッカー系まとめ。

pickers

Date Picker

日付選択用

簡易実装

Picker View

独自設定値選択用

簡易実装

デリゲート

Scroll

scroll

Scroll View

Content Layout Guide がスクロール領域のガイドで Frame Layout Guide がスクロール View の領域ガイドだと思う。

実装例では

  1. ScrollView の直下に StackView (ContentView) を置く
  2. ContentView の上下左右を Content Layout Guide に合わせる
  3. ContentView の高さを Frame Layout Guide の高さに合わせる
  4. ContentView 内の View の幅を Frame Layout Guide の幅に合わせる

Page Control

現在のページ位置を表示するためのやつ。スワイプアクションもつけれる。

簡易実装

横スクロールで Page ControlScrollView を連動させるには下記のようにする。

Web

web

Web View (deprecated)

UIWebView は完全に非推奨になりました!使わないようにしましょう!

新規アプリは 2020/4 まで
既存アプリは 2020/12 まで

UIWebView 寿命

WebKit View

ウェブページ表示用のやつ。

簡易実装

openWindow とかは色々設定しないといけない。。。詳細は下記参考

iOS(swift)ガワアプリの作成で色々苦労した話

単純に Web ページ表示したいだけなら SFSafariViewController を検討してもいいかも。こいつも target="_blank" が連続であると表示されなかったりするので注意
参考

下記のようにするとローカルの動画ファイルとか表示できる。

Containers

TableView, CollectionView, ContainerView のまとめ

containers

Table View Cell

UITableView のセル

Table View

リスト表示用の View。

簡易実装

細かいのは下記参考にどうぞ。

デフォルトTableViewサンプル集(swift)

セルは再利用する仕組みがあるので毎回 init しないよう気をつけよう!(わりと重くなります)

Collection View Cell

UICollectionView のセル

Collection Reusable View

UICollectionView のセクション用の View

細かいのは下記参考

UICollectionViewのHeaderカスタマイズいろいろ

Collection View

グリッドなど複雑なリスト表示用の View。

簡易実装

セルは再利用する仕組みがあるので毎回 init しないよう気をつけよう!(わりと重くなります)

Container View

他の UIViewController を埋め込む場合に使う。

簡易実装

Navigation

navigation

Navigation Controller

画面を階層管理するためのやつ。push で遷移できるようになる。戻るときは pop で最初の画面や指定の画面に戻れる。push も複数画面一気に設定することもできる。

Navigation Bar

画面上部のバー。通常は UINavigationController と一緒に使う。

Navigation Item

UINavigationBar のコンテンツを管理するやつ。leftBarButtonItem, rightBarButtonItem, titleViewなどを持っている。

Toolbar

画面下部にボタンを配置したりするのに使うやつ。なかには UIBarButtonItem を配置する。

Bar Button Item

ToolBar のボタン。画像か文字を表示できる。色を設定したい場合は tintColor で設定する。
凝ったやつを表示したい場合は UIView を作成して init(customView: UIView) で突っ込んだりできる。

Fixed Space Bar Button Item

UIBarButtonItem 同士の固定の余白を設定する場合に使う。実体は UIBarButtonItem

Flexible Space Bar Button Item

UIBarButtonItem を等間隔で並べたい場合とかに使う。両端にボタンを寄せたい場合は BarButtonItem FlexibleSpaceBarButtonItem UIBarButtonItemとするといい。
実体は UIBarButtonItem

Tab

tab

Tab Bar Controller

タブで画面遷移を管理するやつ。

それぞれの画面から別タブにコードで遷移する場合は下記のようにできる

Tab Bar

タブのボタンを置くためのやつ。

Tab Bar Item

タブのボタン。テキストと画像を設定できる。画像のサイズは25*25(参考
Image Set の設定の Render As を Original Image に設定すると画像を塗りつぶさずに表示できる。

Gestures

ジェスチャまとめ。ジェスチャの競合とかいい感じにするには下記参考。

よくわかるUIGestureRecognizerDelegate

gesture

Tap Gesture Recognizer

タップジェスチャ。指の本数とかタップ回数とか設定できる。

簡易実装

Pinch Gesture Recognizer

ピンチイン・ピンチアウトのジェスチャ。scale とかあるけどよくわからない。。。

簡易実装

Rotation Gesture Recognizer

回転ジェスチャ(2本指で回転させるやつ??)。rotation の設定と取得ができる。(あんま使い方わかってない。。。)

簡易実装

Swipe Gesture Recognizer

スワイプジェスチャ。方向と指の本数とかが設定できる。

Pan Gesture Recognizer

パンジェスチャ(ドラッグ??)。指の本数の最大値・最小値とかを設定できる。

簡易実装

Screen Edge Pan Gesture Recognizer

画面の端のパンジェスチャ。Edges の設定ができる。その他 UIPanGestureRecognizer と同じ設定ができる。

簡易実装

Long Press Gesture Recognizer

ロングプレスジェスチャ。有効最小秒数や指の本数とか設定できる。

簡易実装

Custom Gesture Recognizer

カスタムのジェスチャ用。詳しくは下記見るといいかも。

マルチタッチイベントサンプル2 - カスタムGesture Recognizer

簡易実装

これを Custom Gesture Recognizer の Custom Class に設定する

Map Kit View

地図を表示するやつ。APIキーとかいらない!
ピン表示や現在値表示、目的地までへの道順表示など色々できる。詳しくは下記とか見るといいかも。

map

簡易実装

なんか実機だと変なタイミングでクラッシュする
Xcode11.4でMKMapViewを使うとクラッシュするかもしれない

ViewControllers

ViewController 系のまとめ。

View Controller

通常の画面。

Storyboard Reference

他の Storyboard とつなぐためのやつ。他の Storyboard の ViewController に Segue をつなげたりできる。

Table View Controller

TableView つきの ViewController。下記のように色々便利機能があるが固定ヘッダーとか TableView 以外も置きたい場合は向かないかも。

  • tableViewのひも付けとかしなくてもいい
  • var clearsSelectionOnViewWillAppear: Bool
  • var refreshControl: UIRefreshControl?
  • 編集モードの時に func setEditing(_ editing: Bool, animated: Bool) オーバーライドしなくてもいい
  • キーボード表示時に自動でスクロールしてくれる
  • static cell が使える
  • セーフエリアまわりもなんかいい感じにしてくれる

Collection View Controller

CollectionView つきの ViewController。 clearsSelectionOnViewWillAppear くらいの利点しかないかも?(使ったことないのでよくわからない。。。)

Page View Controller

page

ページ管理してくれるやつ。上下や左右のスワイプでページ遷移できる。ページめくりのアニメーションもつけれる。電子書籍とかで便利かも?

簡易実装

AVKit Player View Controller

簡単に動画再生とかできるやつ。

player

簡易実装

Split View Controller

MasterDetail で分けて表示してくれるやつ。幅が十分ある場合は両方表示し、iPhone など幅が狭い場合は1画面ずつ表示したりできる。

Split (iPhone)

Master Detail
split_master split_detail

iPad (LandScape)

split_ipad

簡易実装

細かい制御は色々工夫しないといけないけど iPad, iPhone で共通プロジェクトにしたい場合とかはわりと力を発揮するかも。(ほぼ使ったことないのであまり知らない。。。)

VisualEffect

磨りガラス効果をかけてくれる UIVisualEffectView

visual_effect

詳細はドキュメントで。。。

UIVisualEffectView

Visual Effect View with Blur

背後の View にエフェクトをかける。

こういう構成で中に View が入っている。

blur

Visual Effect View with Blur and Vibrancy

子 View にエフェクトをかける。

こういう構成で中に UIVisualEffectView が入っている。中の UIVisualEffectViewVibrancy にチェックが入っている。

blur_vibrancy

Object

NSObject 使ったことないのでどういうとき使うかわからない。。。

Menu (MacOS)

MacOS 用のメニュー関連のやつ。MacOS 用なのでざっくり説明。

menu

Main Menu

ヘッダー部分。Application とか Window とかメニューを羅列するやつ。

Sub Menu

ヘッダー部分の要素。(Application とか Window とか)

Inline Section Menu

Sub Menu 内のセクション。

Menu Command

Sub Menu 内の要素。(Item 1 とか)
Inline Section Menu の下か Sub Menu 直下に置く。

使ったことなくて使い方わからないやつ

SceneKit View

SceneKit の SCNView。SceneKitなのでたぶん 3D 関連のやつ。

Create 3D games and add 3D content to apps using high-level scene descriptions. Easily add animations, physics simulation, particle effects, and realistic physically based rendering.

ドキュメント

SpriteKit View

SpriteKit の SKView。SpriteKit なので 2D ゲーム用のやつ??

Add high-performance 2D content with smooth animations to your app, or create a game with a high-level set of 2D game-based tools.

ドキュメント

Hosting View Controller

SwiftUI の View を管理するためのやつ。プロジェクト作成時に SwiftUI を選択すると window.rootViewController に設定される。

ドキュメント

A UIKit view controller that manages a SwiftUI view hierarchy.

GLKit View

GLKit の GLKView。GLKit なので OpenGL 用のやつだと思う。
iOS 12 で Deprecated になってる。

Speed up OpenGL ES or OpenGL app development. Use math libraries, background texture loading, pre-created shader effects, and a standard view and view controller to implement your rendering loop.

ドキュメント

GLKit View Controller

GLKit の GLKViewControllerGLKView がのっている。
iOS 12 で Deprecated になってる。

ドキュメント

A view controller that manages an OpenGL ES rendering loop.

ARKit SceneKit View

ARKit の ARSCNViewSCNView を継承した View で 2D の AR がやりたいときに使うやつだと思う。

A view that enables you to display an AR experience with SceneKit.

ARKit SpriteKit View

ARKit の ARSKViewSKView を継承した View で 3D の AR がやりたいときに使うやつだと思う。

A view that enables you to display an AR experience with SpriteKit.

RealityKit AR View

RealityKit の ARView。ARKit と一緒に使って 3D 表示をするためのやつだと思う。

Simulate and render 3D content for use in your augmented reality apps.

ドキュメント

さいごに

これをみれば iOS 開発を忘れてもすぐに思い出せるかも!
Stepper とか Gesture とか使ったことないのもポツポツあるけど便利そうなのも多い。
今回書けてないやつも今後追記するかも。。。 ARKit は使ってみたいと思ってるけどずっと使えてない。。。
Android のコンポーネントまとめもよかったらみてね。(未だ閲覧数0...\(^o^)/)

コメント

タイトルとURLをコピーしました