UIButtonを継承してカスタムビューを作ってみた
2014.12.11 Thursday 12:01
※ この記事は『ぼっちブログ Advent Calendar 2014』の12月11日分のエントリとして登録しています。ぼっちなので、ただ一人で興味のあることを気の向くままに書いています。
------------
凝ったアプリを作る上で、独自ビュー(カスタムビュー)っていうのは重要ですよね。
今までつくり方を知らずに、デフォルトのボタンやパーツなどを使っていました。
簡単なカスタムビューを作って検証してみましたので、メモとして残しておきます。
やりたいこと
カスタムビューを作って、インタフェースビルダー上に配置する。
やったこと
まずインタフェースビルダー上にボタンを2つ配置しました。

上のボタンは、何もしない普通のボタンです。
カスタムしたボタンとの比較用として設置しました。
下のボタンをこれからカスタマイズしていきます。
まずUIButtonを継承して、任意の名前でUICustomButtonという独自のボタンビューを作りました。
そして、背景色とタイトルを変更するコードをinitWithCoderに記述します。
タイトルはとりあえず「Test」にして、背景色を白以外の任意の色にしました。
これで、カスタムビューの出来上がりです。
あとはインタフェースビルダーから、このカスタムビューを適用します。
目的のボタンを選択し、Custom Classのウィンドウにて、今回作成したUICustomButtonを選択します。

Custom Classを変更してもインタフェースビルダー上の見た目は以前と何も変わらないようです。

しかし、実行してみると、UICustomButtonの内容が適用されていることが確認できます。

どんな用途で使う?
たとえば、同じデザインのボタンを画面に複数配置するときは、カスタムビューを一つ作っておけば、お手軽に複製して行きます。
また、あとでデザイン変更があったときは、そのカスタムビューのクラスを変更すれば、すべてに適用できるというメリットがあります。
以上、独学で検証してみました。
------------
凝ったアプリを作る上で、独自ビュー(カスタムビュー)っていうのは重要ですよね。
今までつくり方を知らずに、デフォルトのボタンやパーツなどを使っていました。
簡単なカスタムビューを作って検証してみましたので、メモとして残しておきます。
やりたいこと
カスタムビューを作って、インタフェースビルダー上に配置する。
やったこと
まずインタフェースビルダー上にボタンを2つ配置しました。

上のボタンは、何もしない普通のボタンです。
カスタムしたボタンとの比較用として設置しました。
下のボタンをこれからカスタマイズしていきます。
まずUIButtonを継承して、任意の名前でUICustomButtonという独自のボタンビューを作りました。
#import <UIKit/UIKit.h> @interface UICustomButton : UIButton @end
そして、背景色とタイトルを変更するコードをinitWithCoderに記述します。
タイトルはとりあえず「Test」にして、背景色を白以外の任意の色にしました。
#import "UICustomButton.h" @implementation UICustomButton - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; // 背景色を任意に変更 self.backgroundColor =[UIColor colorWithRed:0.0 green:1.0 blue:0.5 alpha:0.3]; // タイトルを任意に変更 [self setTitle:@"Test" forState:UIControlStateNormal]; return self; } @end
これで、カスタムビューの出来上がりです。
あとはインタフェースビルダーから、このカスタムビューを適用します。
目的のボタンを選択し、Custom Classのウィンドウにて、今回作成したUICustomButtonを選択します。

Custom Classを変更してもインタフェースビルダー上の見た目は以前と何も変わらないようです。

しかし、実行してみると、UICustomButtonの内容が適用されていることが確認できます。

どんな用途で使う?
たとえば、同じデザインのボタンを画面に複数配置するときは、カスタムビューを一つ作っておけば、お手軽に複製して行きます。
また、あとでデザイン変更があったときは、そのカスタムビューのクラスを変更すれば、すべてに適用できるというメリットがあります。
以上、独学で検証してみました。