Пользовательский mpVolumeView также показывает стандартную дорожку и большой палец в iOS 8
Я только что обновил приложение с Xcode 5 на Xcode 6 без изменений и без проблем. Однако при запуске приложения на устройстве iOS 8 мой пользовательский mpVolumeView
теперь имеет дорожку по умолчанию для операционной системы и большой палец, перекрывающий мои собственные дорожку и большой палец.
Мой неизменный код для регулировки громкости таков:
// Set up volume control
[[self mpVolumeView] setBackgroundColor:[UIColor clearColor]];
MPVolumeView *myVolumeView = [[MPVolumeView alloc] initWithFrame: [[self mpVolumeView] bounds]];
[[self mpVolumeView] addSubview:myVolumeView];
for (UIView *view in [myVolumeView subviews]) {
if ([[[view class] description] isEqualToString:@"MPVolumeSlider"])
{ // Find the volume view slider
volumeViewSlider = (UISlider *) view;
}
}
UIImage *volumeLeftCap = [[UIImage imageNamed:@"volume-left-cap.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 16, 0, 0)];
UIImage *volumeRightCap = [[UIImage imageNamed:@"volume-right-cap.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 16)];
[volumeViewSlider setMinimumTrackImage:volumeLeftCap forState:UIControlStateNormal];
[volumeViewSlider setMaximumTrackImage:volumeRightCap forState:UIControlStateNormal];
// Note: on iOS7 it is necessary to set the thumb image last or the thumb will
// be drawn under the slider, on iOS6 the order didn't seem to matter.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_6_1)
{ // iOS 7.0 or greater
[volumeViewSlider setThumbImage: [UIImage imageNamed:@"thumb-iOS7.png"]
forState:UIControlStateNormal];
}
else {
// Earlier versions of iOS...
[volumeViewSlider setThumbImage: [UIImage imageNamed:@"thumb.png"]
forState:UIControlStateNormal];
}
и новый результат можно увидеть здесь:
регулятор громкости с двумя треками и большими пальцами
Кто-нибудь видел эту проблему или я должен сообщить об ошибке??
1 ответ
Попробуй это:
//avoid picture distortion
UIImage *sliderLeftTrackImage = [[UIImage imageNamed: @"slider_top.png"] stretchableImageWithLeftCapWidth: 9 topCapHeight: 0];
[self.slid_vol setMinimumTrackImage: sliderLeftTrackImage forState: UIControlStateNormal];
//slider background
[self.slid_vol setMaximumTrackImage:[UIImage imageNamed:@“slider_background.png"] forState:UIControlStateNormal];
[self.slid_vol currentMaximumTrackImage];
[self.slid_vol setThumbImage:[UIImage imageNamed:@"slider_thumb.png"]forState:UIControlStateNormal];
[self.slid_vol addTarget:self action:@selector(sliderValueChanged:) forControlEvents:UIControlEventValueChanged];
- (void) sliderValueChanged:(id)sender{
UISlider* control = (UISlider*)sender;
if(control == self.slid_vol){
float volume = control.value;
NSLog(@"volume:%f", volume);
}
}