med*_*pal 19 iphone audio-streaming avaudioplayer
我已经尝试了许多方法来实现常规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];
}
Run Code Online (Sandbox Code Playgroud)
从iOS 5.0开始,您可以在UISlider上使用UIAppearance,即使是MPVolumeView的一部分.
代码库中的任何位置:
[[UISlider appearanceWhenContainedIn:[MPVolumeView class], nil] setMinimumTrackImage:[[UIImage imageNamed:@"nowplaying_bar_full.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 25, 5, 25)] forState:UIControlStateNormal];
[[UISlider appearanceWhenContainedIn:[MPVolumeView class], nil] setMaximumTrackImage:[[UIImage imageNamed:@"nowplaying_bar_empty.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 25, 5, 25)] forState:UIControlStateNormal];
[[UISlider appearanceWhenContainedIn:[MPVolumeView class], nil] setThumbImage:[UIImage imageNamed:@"nowplaying_player_nob.png"] forState:UIControlStateNormal];
Run Code Online (Sandbox Code Playgroud)
这里列出了一些可以使用UIAppearance实现的其他类:https://gist.github.com/mattt/5135521
| 归档时间: |
|
| 查看次数: |
9013 次 |
| 最近记录: |