iphone キーボードに立体感のあるボタンを追加する | パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

パークのソフトウエア開発者ブログ|ICT技術(Java・Android・iPhone・C・Ruby)なら株式会社パークにお任せください

開発の解決方法や新しい手法の情報を、パークのエンジニアが提供します。パークのエンジニアが必要な場合は、ぜひお気軽にお問い合わせ下さい。 株式会社パーク:http://www.pa-rk.co.jp/

UITextField、UITextViewのキーボードにボタンを追加する方法です。
更に、ボタンにグラデーションをかけます。
ボタン画像を作るのは面倒くさい、かといって背景色の単色だと味気ないと思った時に。

まずはボタン追加の方法から。
UITextField、UITextViewのinputAccessoryViewプロパティでViewを代入し、ボタンを配置します。


UIView view = [[[UIView alloc] initWithFrame:CGRectMake(0,0,320,30)] autorelease];
view.backgroundColor = [UIColor blackColor];
//作成したボタンを追加[view addSubview:button];
//UITextFieldに代入
textField.inputAccessoryView = view;


こうすることでキーボードの上にボタンが配置されます。

次はグラデーションボタンの作成。
今回はUIbuttonを継承したGradientButtonクラスを作成し、drawRectメソッドを使います。



- (void)drawRect:(CGRect)rect {
//コンテキスト取得
CGContextRef c = UIGraphicsGetCurrentContext();
CGFloat width = self.bounds.size.width;
CGFloat height = self.bounds.size.height;
//カラースペースの管理構造体
CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB();
  //グラフィック状態を保存
CGContextSaveGState(c);
//色の割合0~1の数値
CGFloat locations[2] = {0.0, 1.0};
//色数
size_t num = 2;
グラデーションの構造体
CGGradientRef gradient;
CGFloat components[8] = {0.9, 0.9, 0.9, 1.0, 0.412, 0.412, 0.412, 1.0};
//CGGradientCreateWithColorComponents(CGColorSpaceRef,rgb色の配列,色の割合,色数)
gradient = CGGradientCreateWithColorComponents(space, components, locations, num);

CGPoint startPoint = CGPointMake(width/2, 0.0);
CGPoint endPoint = CGPointMake(width/2, height);
  //2点を直線的に描画
//CGContextDrawLinearGradient(CGContextRef,CGGrandientRef,開始位置,終了位置,
CGContextDrawLinearGradient(c, gradient, startPoint, endPoint, 0);
//保存した状態に戻す
CGContextRestoreGState(c);

[super drawRect:rect];


あとはGradientButtonをメインで呼び出せば完成です。
また、setHighlightedメソッドで押した時の色にもグラデーションをかけれます。

それでは今回はこれにて。| 壁 |д・)

ちなみにinputAccessoryViewをinputViewにすると追加したボタンのみが表示されるので、独自のキーボードも作れます。