2012-06-27 10 views
7

ボリュームを制御するためにMPVolumeViewが必要なアプリケーションを構築しています。それはiOS 5.1より前には完全に機能しましたが、5.1アップデート以来、サムイメージはもはや垂直にセンタリングされていません。想像線のサイズの変更、ビュー(およびスライダ)のサイズ変更などのいくつかのことを試しましたが、何も動作していないように見えます。私が中心の親指を取得する唯一の方法は、私がデフォルトのIOSを使用する場合です。カスタムMPVolumeView Thumb Imageは、iOS 5.1以降、垂直方向にセンタリングされていません。

私はUISliderを正確なmin、max、およびthumbイメージを持つ別のビューに追加しようとしました。ここで

は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のthatsだけのUIViewです。スクリーンショットに親指を緑色で置きます。たぶん enter image description here

+0

私は同じ問題を抱えていました。[Daniel Amitay](http://stackoverflow.com/users/314042/daniel-amitay)は私に解決策を教えてくれました:http://tibr.me/2012/07/14/ customizing-mpvolumeview-appearance/ – murze

+0

これは、すべてのMPVolumeSliderのMPVolumeSlider実装を置き換えるため、優れた解決策ではありません。これにより、他のメディアを再生するために使用するMPMoviePlayerViewControllerスライダのオフセットが発生します。 –

+0

@murze:それは私がこれまで見たことがありますか?これはAppleに受け入れられていますか? – Nailer

答えて

4

よりよい解決策:

ユーザー下部に透明の境界線と大きな画像。網膜ディスプレイの場合は約10ピクセルでなければなりません。

+0

チャームのように働いた! –

0

同じ問題が1つのプロジェクトで解決されました。左の部分と右の部分の色をalpha = 0で設定する必要があります。これは、親指を使わずにすべてのスライダーを透明にすることを意味します。私たちは、親指を使わずに、スライダーの行のカスタムビューを作成する必要があります。このビューでは、任意の色の部分が、上下または左右に移動します。

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

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の左右のデフォルトのスライダカラーとして使用されます。

+0

iOS 8とiOS 7でも使えます – akr

関連する問題