更に、ボタンにグラデーションをかけます。
ボタン画像を作るのは面倒くさい、かといって背景色の単色だと味気ないと思った時に。
まずはボタン追加の方法から。
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にすると追加したボタンのみが表示されるので、独自のキーボードも作れます。