Swiftで遊ぼう! - 209 - ルートビューのコードは続く:CGRect
Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
OOPの概念で作りあげられているiOSフレームワークの理解には時間がかかります。
クラス概念の理解をするのにいい教材なのかもしれませんが、まだまだ読めません。
じゃあ昨日の続き。
viewDidLoad()メソッド
override func viewDidLoad() { super.viewDidLoad() blueViewController = storyboard?.instantiateViewControllerWithIdentifier("Blue") as? BlueViewController blueViewController.view.frame = view.frame switchViewController(from: nil, to: blueViewController) }
注意:キャスティングの扱いが変わっているので、オリジナルの「as」から「as?」に変更しています。
今日のコードはblueViewConrroller.view.frame = view.frameである。
BlueViewControllerクラスをインスタンス化しても、それが持っているViewは表示されません。それはサイズが指定されていないからです。ということでSwitichingViewControllerが持っているViewのサイズをそのままBlueViewControllerのViewのサイズに指定します。
blueViewController.view.frame = view.frame
しかし、素人の私にはこれを次のように書くのがいいような気もします...
blueViewController.view.frame = self.view.frame
駄目ですか?
今日の話題はこれじゃないんです。
iOSフレームワークの基本もおさえていないといけないでしょう。私はいまだにCGRectを知りませんでした(^_^;)
CGRectの勉強をします。frameはCGRectで宣言されているので調べてみると構造体でした。
CGrect構造体は四角形の位置と大きさを以下のように保持しています。
struct CGRect { var origin: CGPoint var size: CGSize }
struct CGPoint { var x: CGFloat var y: CGFloat }
struct CGSize { var width: CGFloat var height: CGFloat }
これはきっと普通のプログラマーにとって当たり前のことで私のように知らない人間がいるとは思わないでしょう。
正本The Swift Programming LanguageのStructureの説明例文として出てきてたんですけどね(^_^;)
今日はここまで。
その後iOS座標システムの勉強はすすみました。