Skip to content
This repository has been archived by the owner on Jun 20, 2023. It is now read-only.

1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)

yuichi takeda edited this page Jan 16, 2015 · 2 revisions

参考 : UIViewController Class Reference | ViewController プログラミングガイド

MVCの C。View の表示と管理やモデルとViewの連携などを行います。 iOSアプリケーションの画面の一単位として認識すると、比較的理解がしやすいと思います。

UIViewController の役割

役割は大きく分けて三つあります。

  1. コンテンツを表示させる
  2. 複数の UIViewController を管理するコンテナ
  3. ユーザの操作のなかに一時的に割り込む Modal(1.5)

本節では 1, 3 の解説をします(2 は次章)。そして UIViewController の lifecycle(1.6) に関しても説明します。

コンテンツを表示させる

ViewControllerを用いてコンテンツを表示するとき、もっともよく使われる方法は UIViewControllerを継承したクラスを作り、カスタマイズしていく方法です。 以下ではその方法について説明します。

UIViewControllerのデザインのカスタマイズ方法は大きく分けてxibを用いる方法とstoryboardを用いる方法があります。 この講義資料を執筆していた当初はxibを用いる方法が主流でしたが、現在はxib、storyboardの両方が用いられています。 そのため、xibの資料を残しつつstoryboardを用いたViewControllerのカスタマイズについては別ページをご覧ください。

1.3 UIViewController1 UIViewController のカスタマイズ(storyboard)

UIViewController の初期化

まず、新規クラスファイルを生成。MixiSampleViewController。 cmd+n -> Objective-C Class -> With XIB for user interface

new file

MixiSampleViewController を初期化

MixiSampleViewController *sampleVC = [[MixiSampleViewController alloc] initWithNibName:@"MixiSampleViewController" bundle:nil];

autolayout のチェックは外す

iOS 6 限定なので外してください。

auto layout

Object library から View の配置

ドラッグして view の上に重ねます。

ObjectLibrary

View の初期設定は各 inspector で

  • attribute inspector で各属性を

attributesInspector

  • size inspector でレイアウトを

sizeInspector

View の階層関係を意識

どの View に add するのかを考えながら配置しましょう。

viewhierarchy

レイアウトした ViewController の表示

MixiViewController の view 上に MixiSampleViewController の view を表示させる。

[self.view addSubview:_sampleVC.view];

IBOutlet の設定

xib 上の UIView component と実装ファイルをつなげてます。これで実装ファイルから xib の View を操作できるようになる。

MixiSampleViewController.h を選択した状態で option key を押しながら .xib を選択することで二面で開くことが出来る。 そこから ctl を押しながら view の上から左のソースコードへドラッグ。 ドロップすると以下のような画面が出ますので、 property の名前をつける。

IBOutlet1

IBOutlet2

下記のコードを MixiSampleViewController 書いて、View を操作。

[_grayView setBackgroundColor:[UIColor redColor]];

IBAction の設定

MixiViewController の xib 上に配置した Button など View コンポーネントからイベントを取得。 IBOutlet の設定と同じ操作をして、項目設定画面になったら Action を選ぶ。またメソッド名も入力。

IBAction

するとメソッドの宣言が自動的にされます。。 また実装ファイルにも空のメソッドが追加されています。ここに MixiSampleViewController の view を表示させる、非表示にするという処理を加えてください。

- (IBAction)pressAddButton:(id)sender {
    [self.view addSubview:_sampleVC.view];
}

- (IBAction)pressRemoveButton:(id)sender {
    [_sampleVC.view removeFromSuperview];
}

autosizing の設定

各 View が親ビューのリサイズ時にどのように振る舞うかを設定します。

autoSizing

  • 内側の矢印マーク チェックを入れると、親ビューのリサイズに合わせて自分をリサイズします。チェックを外すとリサイズせず固定のサイズを保ちます。
  • 外側のマーク チェックを入れると、親ビューのリサイズしても自分と親ビューの間隔を固定に保ちます。外すと親ビューのサイズに合わせて間隔を伸縮します。

下記のコードで View のリサイズが出来る。どのような動きをするか確かめてみよう。

    [_grayView setFrame:CGRectMake(_grayView.frame.origin.x,
                                   _grayView.frame.origin.y,
                                   _grayView.frame.size.width/2,
                                   _grayView.frame.size.height/2)];

はじめに

  1. iOSについて

  2. Xcode最初のステッフ

  3. 導入

  4. Objective C の基礎

  5. メモリ管理

  6. 1.3 UIViewController1 UIViewController のカスタマイズ(xib, autoresizing)

  7. 1.3 UIViewController1 UIViewController のカスタマイズ(storyboard)

  8. UIViewController2 - ModalViewController

  9. UIViewController2 - ModalViewController(storyboard)

  10. UIViewController3 - ライフサイクル

  11. HomeWork 1 Objective C の基本文法

  12. HomeWork 2 UIViewControllerとModalViewController

  13. HomeWork 3 UIViewController + Animation

  14. UIKit 1 - container, rotate-

  15. UINavigationController

  16. UITabController

  17. Custom Container View Controller

  18. Supporting Multiple Interface Orientations

  19. HomeWork 1 - タブバーからモーダルビューを表示する

  20. HomeWork 2 - NavigationController

  21. HomeWork 2.3 デバイスことに回転対応

  22. UIKit 2- UIView -

  23. UIView

  24. UIView のカスタマイズ

  25. UIView Animation

  26. HomeWork 1 - UIScrollView

  27. UIKit 3 - table view -

  28. UITableView について

  29. UITableViewとNavigationController

  30. custom UITableViewCell の作成

  31. UITableViewのその他のオプション、カスタマイズ

  32. HomeWork 1 - Dynamic height with a custom uitableviewcell

  33. UIKit 4 - image and text -

  34. UIImagePickerController

  35. Assets Library

  36. UITextFiled, UITextView

  37. KeyboardNotification

  38. Homework 1 - フォトの複数枚選択

  39. ネットワーク処理

  40. NSURLConnection

  41. JSONのシリアライズとデシリアライズ

  42. UIWebView

  43. ローカルキャッシュと通知

  44. NSUserDefaults, Settings Bundle

  45. NSFileManager

  46. Key Value Observing

  47. NSNotification、NSNotificationCenter を用いた通知

  48. UILocalNotification

  49. Blocks, GCD

  50. Blocks

  51. GCD

  52. 【演習】GCD,-Blocksを用いたHTTPリクエストマネージャの作成

  53. 設計とデザインパターン

  54. クラス設計 1

  55. クラス設計 2

  56. [クラス設計演習] (https://github.com/mixi-inc/iOSTraining/wiki/9.3-%E3%82%AF%E3%83%A9%E3%82%B9%E8%A8%AD%E8%A8%88%E6%BC%94%E7%BF%92)

  57. 開発ツール

  58. Instruments, デバッガ

  59. CocoaPods

  60. テスト

  61. iOS開発におけるテスト

  62. GHUnit

  63. Kiwi

  64. KIF

  65. In-App Purchase

  66. In-App Purchase

  67. 付録

  68. Tips of Xcode

  69. Auto Layout 入門

  70. Auto Layout ドリル

Edit sidebar

Clone this wiki locally