Пользовательское изображение большого пальца MPVolumeView не центрировано по вертикали с iOS 5.1
Я создаю приложение, которому нужен 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 - это просто UIView, размером 153х33. Я положил большой палец на скриншоте.
2 ответа
Может быть, лучшее решение:
Пользователь увеличенного изображения с прозрачной рамкой внизу. Должно быть около 10px для дисплеев Retina.
Ту же проблему я решил в одном проекте. Должен быть установлен цвет левой части и правой части с альфа = 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.