2

在以前的 iOS 版本中一切正常,但在 iOS 7 上没有。它没有为 UISlider 设置自定义设计,因此视图上没有任何内容,音量滑块视图为空。其他一切正常。

代码:

for (UISlider *slider in volumeSlider.subviews) {
        NSLog(@"Searching!");
        if ([slider isKindOfClass:[UISlider class]]) {
            NSLog(@"SLIDER FOUND!");
            [slider setThumbImage:[UIImage imageNamed:@"thumbSlider.png"] forState:UIControlStateNormal];
            [slider setMinimumTrackImage:[[UIImage imageNamed:@"sliderMax.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
            [slider setMaximumTrackImage:[[UIImage imageNamed:@"sliderMin.png"] stretchableImageWithLeftCapWidth:10.0 topCapHeight:0.0] forState:UIControlStateNormal ];
        }
    }
4

2 回答 2

5

iOS7 现已发布,因此 NDA 不再适用。如果您需要支持低于 iOS6 的操作系统,您可以使用此代码。这也适用于 iOS7。注意:如果你只需要支持iOS6及更高版本有苹果提供的直接API来设置这些图像来自定义MPVolumeView的外观,具体是setVolumeThumbImage:(UIImage *) forState:(UIControlState), setMinimumVolumeSliderImage:(UIImage *) forState :(UIControlState) 和 setMaximumVolumeSliderImage:(UIImage *) forState:(UIControlState)。

// replace the standard look and feel for the MPVolumeSlider with custom images
// note: on iOS7 it is necessary to set the thumb image last or the thumb will be drawn under the slider (not pretty), on iOS6 the order didn't seem to matter.
UIView *a = nil;
for (UIView *view in [self.volumeView subviews]) {
    if ([[[view class] description] isEqualToString:@"MPVolumeSlider"]) {
        a=view;
        UIImage *volumeBackgroundImage = [[UIImage imageNamed:@"volume_background"] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)];
        [(UISlider *)a setMinimumTrackImage:[[UIImage imageNamed:[[ApplicationType sharedInstance] imageForAppType:@"volume_progress"]] resizableImageWithCapInsets:UIEdgeInsetsMake(9, 5, 7, 5)]  forState:UIControlStateNormal];
        [(UISlider *)a setMaximumTrackImage:volumeBackgroundImage forState:UIControlStateNormal];
        [(UISlider *)a setThumbImage:[UIImage imageNamed:@"volume_handle"] forState:UIControlStateNormal];
    }
}
于 2013-09-19T19:56:50.797 回答
0

可能 Apple 更改了一些 API。如果您将此代码用于电影播放器​​的音量滑块,请尝试改用MPVolumeView

于 2013-09-16T05:41:48.897 回答