回答brush51的问题:
我怎样才能做到这一点?只是改变设备音量?
正如 0x7fffffff 建议的那样:
您不能以编程方式更改设备音量,但是 MPVolumeView(音量滑块)可以更改设备音量,但只能通过用户交互。
所以,苹果推荐使用MPVolumeView
,所以我想出了这个:
添加volumeSlider
属性:
@property (nonatomic, strong) UISlider *volumeSlider;
初始化MPVolumeView
并添加到您的视图的某个位置(可以隐藏,没有框架,或者因为showsRouteButton = NO
and为空showsVolumeSlider = NO
):
MPVolumeView *volumeView = [MPVolumeView new];
volumeView.showsRouteButton = NO;
volumeView.showsVolumeSlider = NO;
[self.view addSubview:volumeView];
查找并保存参考UISlider
:
__weak __typeof(self)weakSelf = self;
[[volumeView subviews] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UISlider class]]) {
__strong __typeof(weakSelf)strongSelf = weakSelf;
strongSelf.volumeSlider = obj;
*stop = YES;
}
}];
添加目标操作UIControlEventValueChanged
:
[self.volumeSlider addTarget:self action:@selector(handleVolumeChanged:) forControlEvents:UIControlEventValueChanged];
然后检测音量变化(即通过硬件音量控制):
- (void)handleVolumeChanged:(id)sender
{
NSLog(@"%s - %f", __PRETTY_FUNCTION__, self.volumeSlider.value);
}
以及其他方式,您可以通过以下方式设置音量:
self.volumeSlider.value = < some value between 0.0f and 1.0f >;
希望这会有所帮助(并且 Apple 不会从 MPVolumeView 中删除 MPVolumeSlider)。