Imagen de pulgar MPVolumeView personalizada no cinput verticalmente desde iOS 5.1

Estoy construyendo una aplicación que necesita un MPVolumeView para controlar el volumen. Funcionó perfectamente antes de iOS 5.1, pero desde la actualización 5.1 la image del pulgar ya no está cinput verticalmente. Intenté algunas cosas como cambiar las dimensiones de la image, cambiar el tamaño de mis vistas (y el control deslizante), pero nada parece funcionar, el pulgar ya no está verticalmente centrado. La única forma en que obtengo un pulgar centrado es si uso el iOS pnetworkingeterminado.

Intenté agregar un UISlider a otra vista con la image min, max y pulgar exacta y que uno está centrado bien.

Aquí está el código para el 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 es solo una UIView que es 153×33. Puse el pulgar en verde en la captura de pantalla. introduzca la descripción de la imagen aquí

Quizás una mejor solución:

Usuario una image más grande con un borde transparente en la parte inferior. Debería tener alnetworkingedor de 10 px para Retina Displays.

El mismo problema que resolví en un proyecto. Se debe establecer el color de la parte izquierda y la parte derecha con alpha = 0: significa que todo el control deslizante es transparente sin el pulgar (sin parte movible). Después de que debemos crear vista personalizada para la línea de control deslizante, sin pulgar. En esta vista, cualquier parte de color se puede desplazar como desee, superior o inferior, izquierda o derecha. Se obtuvo utilizando el y definido para su ocasión:

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

Y agregue el control deslizante a esta línea como subvista. La vista resultante será un control deslizante. Por ejemplo:

 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]; 

// después de este lineOfSliderWithoutThumb es nuestro uislider personalizado. Nota: los colors se utilizan como colors pnetworkingeterminados del slider de los lados izquierdo y derecho de UISlider.