【发布时间】:2011-04-18 08:04:55
【问题描述】:
我尝试了很多方法来实现一个常规的UISlider 并控制设备音量,但都是Native-C 函数导致许多无法追踪的错误。
我尝试了MPVolumeView,它的作用就像是魅力一样,即使在你关闭应用程序后它甚至可以控制设备音量,就像 iPod 应用程序一样。
我的问题是,有没有像UISlider 那样用特定的颜色和图像自定义MPVolumeView?
注意:我想要一个合法的方法,而不使用私有的未记录的 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];
}
【问题讨论】:
-
干得好。很高兴更新您的问题。
-
只是出于好奇,App Store 接受了吗?
-
@sooper 回复太晚了,抱歉。不幸的是,我没有继续这个应用程序,也从未将它提交到 App Store。但从个人经验来看,我看过很多修改原始组件的教程,都被接受了。
-
请注意,在 iOS 6 中,内置了自定义 MPVolumeView 滑块的方法,类似于 UISlider 的方法
标签: iphone avaudioplayer audio-streaming