我尝试了很多方法来实现常规UISlider
和控制设备音量,但都是 Native-C 函数,导致许多无法追踪的错误。
我试过MPVolumeView
它的魅力,它甚至可以在你关闭应用程序后控制设备音量,就像 iPod 应用程序一样。
我的问题是,有没有MPVolumeView
用特定的颜色和图像来定制,就像UISlider
?
注意:我想要一种不使用私有未记录 API 的合法方法。
更新
根据@Alexsander Akers 的回答,由于子视图隐藏在MPVolumeView
我必须循环浏览子视图,获取UISlider
并自定义它,这里是代码。
IBOutlet UISlider *volumeSlider; //defined in <class.h> and connected to a UISlider in Interface Builder
-(void) viewDidLoad {
....
[self setCustomSlider];
....
}
-(void) setCustomSlider{
MPVolumeView *volumeView = [[[MPVolumeView alloc] initWithFrame:[volumeSlider frame]] autorelease];
NSArray *tempArray = volumeView.subviews;
for (id current in tempArray){
if ([current isKindOfClass:[UISlider class]]){
UISlider *tempSlider = (UISlider *) current;
UIImage *img = [UIImage imageNamed:@"trackImage.png"];
img = [img stretchableImageWithLeftCapWidth:5.0 topCapHeight:0];
[tempSlider setMinimumTrackImage:img forState:UIControlStateNormal];
[tempSlider setThumbImage:[UIImage imageNamed:@"thumbImage.png"] forState:UIControlStateNormal];
}
}
[volumeSlider removeFromSuperview];
[self.view addSubview:volumeView];
}