ios - 如何在 iOS 11.4 上以编程方式更改音量

标签 ios objective-c mpvolumeview

之前,我使用这种方法以编程方式设置音量:

MPVolumeView *volumeView = [[MPVolumeView alloc] init];
UISlider *volumeViewSlider = nil;

for (UIView *view in [volumeView subviews])
{
    if ([view.class.description isEqualToString:@"MPVolumeSlider"])
    {
        volumeViewSlider = (UISlider *)view;
        break;
    }
}

[volumeViewSlider setValue:0.5 animated:YES];
[volumeViewSlider sendActionsForControlEvents:UIControlEventTouchUpInside];

在 iOS 11.4 之前,它运行良好(即使在 iOS 11.3 上),但在 iOS 11.4 上却不行。音量值保持不变。有人可以帮助解决这个问题吗?谢谢。

最佳答案

在稍有延迟后更改 volumeViewSlider.value 即可解决问题。

- (IBAction)increase:(id)sender {
  MPVolumeView *volumeView = [[MPVolumeView alloc] init];
  UISlider *volumeViewSlider = nil;

  for (UIView *view in volumeView.subviews) {
    if ([view isKindOfClass:[UISlider class]]) {
      volumeViewSlider = (UISlider *)view;
      break;
    }
  }

  dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.01 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    volumeViewSlider.value = 0.5f;
  });
}

Swift version

关于ios - 如何在 iOS 11.4 上以编程方式更改音量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737943/

相关文章:

ios - 隐式动画淡入不起作用

ios - 以编程方式设置时标签不会更改

ios - MPVolumeView 在启动时不显示路线按钮

ios - 在 iOS 8 中隐藏音量 HUD

ios - 你如何实现 MPVolumeView?

ios - Apple Watch 是否可以直接从 Web 服务器获取数据,而无需 iPhone 作为中介?

ios - "automatically adjusts font requires using a dynamic type text style"警告是什么意思?

android - 苹果开发商导出合规

iphone - 恢复 NSUserDefault 中的值

objective-c - 删除 UIColor CGColor - KVC 警告