2011年1月31日月曜日

UISlider をコードで描画してつまみ部分の当たり領域を大きくする

  sld = [[[UISlider alloc] initWithFrame:CGRectMake(0, 0, 200, 40)] autorelease];
  sld.minimumValue = 0.0;  // 最小値
  sld.maximumValue = 1.0;  // 最大値
  sld.value = 0.5;         // 初期値を250に設定
  [sld addTarget:self action:@selector(onChangeSlider:)
      forControlEvents:UIControlEventValueChanged];
  [self.view addSubview:sld];

IBを使ってスライダーを作ると、つまみの画像をセットしても、サイズは変わらないみたい。そしてIBからUISliderの高さは変更できない?(グレーになっていて変更できないし、ビューに配置したオブジェクトの高さを変える事もできない)

なので、コードでスライダーを描画して、高さをしてあげて、当たり領域を大きくすることにした。このままだとデフォルトのパーツで描画されるので、わかりにくいが、40x40のつまみ画像を用意して、

  [sld setThumbImage:thumb1 forState:UIControlStateNormal ];

などすれば、当たり領域が大きくなっているのがわかる。

iPhoneの標準UIはよくできてると思うけど、少し小さくて操作しにくいと思う人もいるので(だからこうしてるんだけど)、高さ等々もうちょっとフレキシブルに変更できるようになってるといいのになぁ。

0 件のコメント:

コメントを投稿