0

UISlider で特定の間隔のデータを選択する必要がある iPad 用のアプリケーションを開発しています。スライダーには 2 つのスライダー ボタンが必要です。また、コントロールには間隔の移動、つまり 2 つのスライダー ボタン間の領域を移動して他の間隔のデータを選択できるようにする必要があります。これを処理するために利用できるカスタム UI スライダーはありますか?あなたのアイデアを楽しみにしています…よろしくお願いします

4

1 に答える 1

3

UISlider を作成する 2 つの方法

最初の方法

プログラミングから UISlider を 1 つ作成します。

これで、必要に応じて画像を設定できます。

UISlider に画像を配置するためのコードは次のとおりです。

UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(0.0, 0.0, 100.0, 30.0)];
[slider setColorPicker:colorPicker];
[slider setUseCustomSlider:NO];

[slider setThumbImage:[UIImage imageNamed:@"thumbSlider.png"] forState:UIControlStateNormal];

[slider setThumbImage:[UIImage imageNamed:@"thumbSlider.png"] forState:UIControlStateHighlighted];

[slider setMinimumTrackImage:[[UIImage imageNamed:@"grey_slide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal];

[slider setMaximumTrackImage:[[UIImage imageNamed:@"blue_slide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal];

[self.view addSubview:slider];

カスタム スライダーを作成する別の方法

ここで、UIPanGestureRecognizer のみを使用して、2 つの画像を含むもう 1 つのスライダーを作成します。

その上に2つの画像を追加します。1 つはストリップのようなもので、もう 1 つはサム イメージのようなものです。

これがコードです。

最初にスライダーを作成します..

UIImageView *imageback = [[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 47)] autorelease];
imageback.image = [UIImage imageNamed:@"strip.png"];
imageback.backgroundColor = [UIColor clearColor];
[sliderView addSubview:imageback];

sliderImg = [[[UIImageView alloc] initWithFrame:CGRectMake(147.5, 27, 25, 25)] autorelease];
sliderImg.contentMode = UIViewContentModeScaleToFill;
sliderImg.image = [UIImage imageNamed:@"dot.png"];
sliderImg.backgroundColor = [UIColor clearColor];
sliderImg.userInteractionEnabled = YES;
[sliderView addSubview:sliderImg];

UIPanGestureRecognizer をドット イメージに適用します。

UIPanGestureRecognizer *panGestureImg = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panDetectedSlider:)];
[sliderImg addGestureRecognizer:panGestureImg];
[panGestureImg release];

パンジェスチャーメソッド。

-(void)panDetectedSlider:(UIPanGestureRecognizer *)panRecognizer
{
    if ([panRecognizer state] == UIGestureRecognizerStateBegan)
    {
        //Start
    }
    else if([panRecognizer state] == UIGestureRecognizerStateChanged)
    {
        //Change
        CGPoint translation = [panRecognizer translationInView:sliderImg];
        CGPoint imageViewPosition = sliderImg.center;
        imageViewPosition.x += translation.x;
        sliderImg.center = imageViewPosition;
        [panRecognizer setTranslation:CGPointZero inView:sliderImg];
    }
    else if([panRecognizer state] == UIGestureRecognizerStateCancelled || [panRecognizer state] == UIGestureRecognizerStateFailed || [panRecognizer state] == UIGestureRecognizerStateEnded)
    {
        //End
    }
}
于 2012-11-03T09:33:49.607 に答える