7

ボリュームを制御するために MPVolumeView を必要とするアプリケーションを構築しています。iOS 5.1 より前では完全に機能していましたが、5.1 の更新以降、サム イメージが垂直方向の中央に配置されなくなりました。イメージのサイズを変更したり、ビュー (およびスライダー) のサイズを変更したりしましたが、何も機能していないようです。親指が垂直方向に中央に配置されていません。中央の親指を取得する唯一の方法は、デフォルトの iOS を使用する場合です。

正確な最小、最大、および親指の画像を使用して、別のビューに UISlider を追加しようとしましたが、その画像は中央に配置されています。

MPVolumeView のコードは次のとおりです。

MPVolumeView *volumeView;
volumeView = [[[MPVolumeView alloc] initWithFrame:volumeViewHolder.bounds] autorelease];
[volumeViewHolder addSubview:volumeView];

UIView  *volumeViewSlider;
for (UIView *view in [volumeView subviews])
{
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
    {
        volumeViewSlider = view;
    }
}

[(UISlider *)volumeViewSlider setThumbImage:sliderHandleIcon forState:UIControlStateNormal];
    [(UISlider *)volumeViewSlider setMinimumTrackImage:leftTrackImage forState:UIControlStateNormal];
    [(UISlider *)volumeViewSlider setMaximumTrackImage:rightTrackImage forState:UIControlStateNormal];

volumeViewHolder は、153x33 の単なる UIView です。スクリーンショットでは親指を緑色にしています。 ここに画像の説明を入力

4

2 に答える 2

4

多分より良い解決策:

下部に透明な境界線がある大きな画像を使用します。Retina ディスプレイの場合は約 10px にする必要があります。

于 2013-01-07T16:16:21.493 に答える
0

あるプロジェクトで解決した同じ問題。左部分と右部分の色をアルファ = 0 で設定する必要があります。これは、つまみのないすべてのスライダーが透明であることを意味します (移動可能な部分はありません)。その後、つまみなしで、スライダーのラインのカスタム ビューを作成する必要があります。このビューでは、任意の色の部分を上または下、左または右に移動できます。あなたの機会に定義された y を使用して取得しました:

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(x,y,width, height)];

そして、この行にスライダーをサブビューとして追加します。結果のビューはスライダーになります。例えば:

UISlider *ourSlider  = ...; 
//initialise UISlider

ourSlider.minimumTrackTintColor = [UIColor colorWithRed:0 green:122.0f/255.0f blue:1 alpha:0];

ourSlider.minimumTrackTintColor = [UIColor colorWithRed:0 green:122.0f/255.0f blue:1 alpha:0];

UIView *lineOfSliderWithoutThumb = ... ;
// creation it

[lineOfSliderWithoutThumb addSubview:ourSlider];

//この lineOfSliderWithoutThumb の後は、カスタム uislider です。注: そこの色は、UISlider の左側と右側のデフォルトのスライダーの色として使用されます。

于 2015-02-13T22:37:14.753 に答える