About Cosense
Help
Log in
tasuwo-ios
C
o
n
t
a
i
n
e
r
V
i
e
w
背
景
C
o
n
t
a
i
n
e
r
V
i
e
w
C
o
n
t
r
o
l
l
e
r
と
は
、
複
数
の
V
i
e
w
C
o
n
t
r
o
l
l
e
r
を
組
み
合
わ
せ
た
V
i
e
w
C
o
n
t
r
o
l
l
e
r
で
あ
り
、
具
体
例
と
し
て
は
U
I
N
a
v
i
g
a
t
i
o
n
C
o
n
t
r
o
l
l
e
r
や
U
I
T
a
b
B
a
r
C
o
n
t
r
o
l
l
e
r
等
が
あ
る
。
C
o
n
t
a
i
n
e
r
V
i
e
w
C
o
n
t
a
i
n
e
r
V
i
e
w
は
、
V
i
e
w
C
o
n
t
r
o
l
l
e
r
に
対
す
る
子
と
な
る
V
i
e
w
で
あ
り
、
I
n
t
e
r
f
a
c
e
B
u
i
l
d
e
r
上
で
C
o
n
t
a
i
n
e
r
V
i
e
w
O
b
j
e
c
t
と
し
て
追
加
で
き
る
。
こ
の
U
I
要
素
自
体
は
プ
レ
ー
ス
ホ
ル
ダ
ー
で
あ
り
、
実
態
と
な
る
V
i
e
w
C
o
n
t
r
o
l
l
e
r
と
E
m
b
e
d
S
e
g
u
e
で
結
線
さ
れ
、
遷
移
す
る
。
I
n
t
e
r
f
a
c
e
B
u
i
l
d
e
r
の
ロ
ー
ド
時
に
は
、
親
V
i
e
w
C
o
n
t
r
o
l
l
e
r
の
ロ
ー
ド
と
同
時
に
子
V
i
e
w
C
o
n
t
r
o
l
l
e
r
群
も
同
時
に
初
期
化
さ
れ
る
事
に
な
る
。
C
o
n
t
a
i
n
e
r
V
i
e
w
を
利
用
せ
ず
に
子
V
i
e
w
C
o
n
t
r
o
l
l
e
r
を
扱
い
た
い
場
合
は
、
a
d
d
C
h
i
l
d
V
i
e
w
C
o
n
t
r
o
l
l
e
r
:
を
利
用
し
て
p
r
o
g
r
a
m
a
t
i
c
a
l
l
y
に
追
加
で
き
る
。
>
V
i
e
w
C
o
n
t
r
o
l
l
e
r
P
r
o
g
r
a
m
m
i
n
g
G
u
i
d
e
f
o
r
i
O
S
-
I
m
p
l
e
m
e
n
t
i
n
g
a
C
o
n
t
a
i
n
e
r
V
i
e
w
C
o
n
t
r
o
l
l
e
r
Related
Sort by
Related
Modified
Created
Last visited
Most linked
Page rank
Title
Links
ViewController
[** [ViewController] とは?]アプリケーションの内部構造の基盤であり、すべてのアプリケーションは少なくとも1つの [ViewController] を持つ。UI 自体や、UI 同士の遷移の管理を行う。[ViewController] には、以下の2つの種類がある。[[[Content view controller]]] は、コンテンツを表示する通常の[ViewController]
Interface Builder
Container View Controller
[*** 独自の [Container View Controller]]>[https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/ImplementingaContainerViewController.html Implementing a Container View Controller - View Controller Programm
UINavigationController
Segue
Custom Transition in UIKit
Container View Controller
UISplitViewController
Transition
[*** [UIViewController] の画面遷移][** [UIViewController]を画面に出す方法][UIViewController] を画面に出す方法は、大別すると [/ [UIViewController] 自体を表示する] と [/ [Container View Controller] に埋め込む] の二種類があって、前者の機能は全ての [UIViewController] に組み込まれている。他の ViewController を表示すると、表示された側が [Presented Vi
Coordinator パターン
[*** 歴史]Coordintor パターンは、Soroush Khanlou 氏が 2015 年の NSSpin での [トーク https://www.slideshare.net/secret/3jJlEE1weo0RRl] 及び [ブログ http://khanlou.com/2015/01/the-coordinator/] で発表したもの。Coordinator パターンを MVVC と組み合わせた
ViewController の描画
[** 概要][ViewController] をスクリーン上に描画する方法は、以下の 2 パターンがある。[ViewController] を [Container View Controller] に組み込んで描画するこの場合、基本的なナビゲーションも自動的に提供される[ViewController] を直接描画する
画面遷移
ViewController
カスタム遷移
[*** カスタム遷移の種類][ViewController] 同士の遷移については、[UIKit] が予め提供してくれている遷移の仕方がいくつかあり、[UIView.AnimationOptions] で定義されている。例えば、以下のような遷移がある。`transitionFlipFromLeft/Right/Top/Bottom`フリップをめくるような遷移`transitionCurlDown/Up`
UIStoryboardSegue
[*** 概要][[2 つの [ViewController] 間の視覚的な遷移の実行とその準備]]のためのオブジェクト[UIKit] で利用可能な [標準の遷移] はサポートしているサブクラスを作成し、カスタムの遷移を作成することもできる遷移内の [ViewController] に関する情報を保持している
Target-Action
[*** とは?]イベント発生時に他のオブジェクトにメッセージを送信するのに必要な情報をオブジェクトに保持させるデザインパターン保持させる情報[[aciton [selector]]] 呼び出されたメソッドを一意に識別する[[target]] メッセージを受信するオブジェクト。どんなオブジェクトでも良いが、大抵、[Control] を保持した root view を持つ [ViewController]
Trait
ViewController による Map/Siri インタフェースの拡張
そのうち試したいSiri や Map のデフォルトのインタフェースを置き換え、もしくは拡張するための [ViewController] を設定できる[SiriKit] はデフォルトでレスポンスのコンテンツを描画するインタフェースを持っている一部の [/ 置き換え]シングルビューによる [/ 拡張]
Responder chain
めちゃくちゃわかりやすいので、以下を読んだ方が良い>https://swiftrocks.com/understanding-the-ios-responder-chain.html[*** 概要]iOS アプリケーションは、その外界からユーザ操作として様々な種類の [[イベント]] を受け取る。シングルタップやダブルタップ、スワイプ等のジェスチャや、キーボードによる入力、ロックスクリーンや外部端末からの Remote Control 等がこのイベントに相当する。このイベントを適切に検知し、ハンドリングする必要がある。
Presentation Style
カスタムしたい場合>https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/DefiningCustomPresentations.html#//apple_ref/doc/uid/TP40007457-CH25-SW1[*** 概要][UIViewController] の [Presentation Style] とは、[[[Presented View Controller] としての外観]] を決めるスタイルのこと。
Layout Margins
Outlet
[*** とは?]他のコンテンツを参照するプロパティ[storyboard] や [nib] ファイル上のオブジェクトを参照するためによく利用される[UIKit] や [AppKit] における view オブジェクトに メッセージを送信するために頻繁に利用されるこれらの view オブジェクトは、コード上ではなく [storyboard] 上で定義されるので
アプリケーションの UI の保存と回復
[*** 概要]iOS デバイスではよく割り込みが入る割り込みは長時間にわたる場合もあり、その時、リソースの解放のために、アプリケーションがシステムによって終了されてしまう場合があるしかし、ユーザはアプリケーションが終了されたことは知らないし、それによってアプリケーションが変わることも期待していない終了時の状態が維持されていることを期待しているはず
Nib
下記を読めば ok>https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i-CH4-SW13>https://qiita.com/takasek/items/3bc284149dcd8aecbf7c
UITabBarController
UITabBar
基本的には [UITabBarController] と合わせて利用するものだけど、単体でも利用できるらしい。常にスクリーン下部に配置され、[UITabBarItem] を配置できる。設定できる UI 要素は背景色と [tintColor]。>https://developer.apple.com/documentation/uikit/uitabbar
Interface Builder
Dynamic Type
[*** 概要]ユーザはスクリーン上表示されるテキストコンテンツのサイズを調整できる。この機能は [Dynamic Type] と呼ばれる。読みやすさのためにより大きな文字にしたいケースや、小さな字も読める人がより多くの情報を画面に表示したいケースなどに利用できる。[*** Text Style]サイズをどのように調整するか?は [UIFont] の [/ Text Style] によって設定できる。`headline`, `body`, `title1` 等、ユースケースに応じたスタイルが事前に定義されている。
Content Compression Resistance Priority
#Auto_Layout #Interface_Builder圧縮の優先度高い方が圧縮されない>https://grandbig.github.io/blog/2018/08/04/content-hugging-priority/
Content Hugging Priority
#Auto_Layout #Interface_Builderコンテンツのサイズを優先する>https://grandbig.github.io/blog/2018/08/04/content-hugging-priority/
Thread 1: Signal SIGABRT で落ちた時は
[*** 概要]`SIGABRT` とは `Signal Abort` の略称であり、iOS から実行中のアプリに対して発行されるシグナル。これが発行されると、なんらかのランタイムエラーが発生したということであり、アプリがクラッシュする。[*** 原因]色々あるらしいが、[Interface Builder] で Outlet を適切に設定していない、というのがポピュラーっぽい[*** 原因を探る]
UIScrollView
#UIKit[*** 概要][UIScrollView] は、その名の通り内包するコンテンツをスクロール可能な View。[UITableView], [UITextView], [UICollectionView] などの Super Class。[UIScrollView] 自体が表示する UI は、上下左右方向のインジケータのみ。[** ジェスチャの取得][UIScrollView] はスクロールのためにスクロールバーを必要とせず、内包するコンテンツの上を指でなぞってスクロールすることが可能となっている。そのため、[UIScrollView] のコンテンツがタッチされた時、それがスクロールのためのものか?それとも内包するコンテンツに対するジェスチャ (ボタンの押下やセルの選択など) なのか?を判定する必要がある。
Live Views
[*** 概要][IBDesignable] 及び [IBInspectable] は、WWDC 2014 にて初めて発表された。どちらも、[/ カスタムな View を [Interface Builder] 上にリアルタイムに反映する] ような Live View の機能を実現するために利用される。[** [Interface Builder] 利用時のみ実行されるコード][prepareForInterfaceBuilder() https://developer.apple.com/documentation/objectivec/nsobject/1402908-prepareforinterfacebuilder] は、[IBDesignable] なオブジェクトが [Interface Builder] 上に生成された時に呼び出される。これを `overr
領域外を表示しない
#Interface_Builder[clipsSubviews] をオンにすると、`bounds` 外の要素は描画しないようになるようだ。要素を隠しているはずなのになぜかその中の要素が枠外にはみ出している、みたいな場合の応急処置に使える>http://fuwattoo.blogspot.com/2013/10/uiview-bounds.html
Localize
StackView
#Interface_Builder>https://qiita.com/yucovin/items/ff58fcbd60ca81de77cb
MVVM
[** View][/ UI][Interface Builder] で作成したり、制約 (`NSLayoutConstrants`) を加えたりする`UIButton`, `UITextField`, `UITableView`, `UICollectionView`, ...[** Model]
Created
6 years ago
by
Tasuku Tozawa
Updated
6 years ago
by
Tasuku Tozawa
Views: 94
Page rank: 10.19
Copy link
Copy readable link
Start presentation
Hide dots
Container View
背景
Container View Controller
とは、複数の
ViewController
を組み合わせた
ViewController
であり、具体例としては
UINavigationController
や
UITabBarController
等がある。
Container View
Container View
は、
ViewController
に対する子となる View であり、
Interface Builder
上で
Container View Object
として追加できる。この UI 要素自体はプレースホルダーであり、実態となる
ViewController
と
Embed Segue
で結線され、遷移する。
Interface Builder
のロード時には、親
ViewController
のロードと同時に子
ViewController
群も同時に初期化される事になる。
https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/Art/container_view_embed_2x.png
Container View
を利用せずに子
ViewController
を扱いたい場合は、
addChildViewController:
を利用して programatically に追加できる。
View Controller Programming Guide for iOS - Implementing a Container View Controller