我有一个UIToolBar,旨在包含用于控制音量和亮度的滑块.我为音量使用MPVolumeView滑块,为亮度使用普通的UISlider.虽然滑块本身工作正常,但它们的垂直位置不匹配:

如何让它们处于同一高度?
我的代码:
- (void) createToolbar{
toolBar = [[UIToolbar alloc] init];
toolBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
UISegmentedControl *modeSelector = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"Play", @"Rec", nil]];
[modeSelector setSegmentedControlStyle:UISegmentedControlStyleBar];
[modeSelector addTarget:self action:@selector(changePlayMode) forControlEvents:UIControlEventValueChanged];
modeSelector.selectedSegmentIndex = 0;
UIBarButtonItem *modeSelectorAsToolbarItem = [[UIBarButtonItem alloc] initWithCustomView:modeSelector];
brightnessSlider = [[UISlider alloc] initWithFrame:CGRectMake(0, 0, 150, 30)];
brightnessSlider.minimumValue = 0;
brightnessSlider.maximumValue = 1;
brightnessSlider.value = [[UIScreen mainScreen] brightness];
brightnessSlider.continuous = YES;
[brightnessSlider addTarget:self action:@selector(adjustBrightness:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *brightSliderAsToolbarItem = [[UIBarButtonItem alloc] initWithCustomView:brightnessSlider];
MPVolumeView *volView = [[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, …Run Code Online (Sandbox Code Playgroud) SO上有很多问题和答案,这[AVAudioSession sharedInstance].outputVolume是检测设备音量的唯一方法.但它似乎没有正常工作.outputVolume永远不会改变,尽管它在第一次设置时是正确的(在应用程序启动时).
我做错了吗?除了阅读价值之外,我不知道还能做什么outputVolume.我的直觉会告诉我这是一个错误,如果不是因为其他人似乎做得很好.我还在iOS 7和8上测试了它,所以它不是iOS 8的bug.我在一个小型测试项目中重现了同样的事情,所以我的项目中没有任何东西干扰它.
另外:我很清楚铃声音量和音量之间的区别.我改变了两个,报告的数量仍然没有改变.
这是我在测试项目中使用的函数:
- (void)checkVolume
{
float volume = [AVAudioSession sharedInstance].outputVolume;
NSLog(@"Volume: %f", volume);
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
{
[self checkVolume];
});
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的应用程序中静音设备的铃声,但出于某种原因,使用 AVSystemController 就像这个答案(如何禁用 iOS 系统声音)不会让我让设备一直静音..它会将其降低到音量为 1 bar,但并非完全静音。
我知道这是可以做到的,可能使用像 AVSystemController 这样的私有 API,而且我知道如果用户期望应用程序提供这种功能,Apple 仍然会批准该应用程序(因为我在 App Store 中已经找到了 2 个应用程序以编程方式使设备静音,无需越狱或类似操作)。
这些应用程序实际上做得更好 - 它们实际上切换了实际的静音,而不仅仅是将音量降低到零。
有谁知道这是怎么做的?
任何帮助将不胜感激!谢谢!
有很多问题询问如何设置音量AVPlayer,但是如何获得iOS中播放器的当前音量?
例如,我试图将一首歌从其当前级别淡出.我可以在其他地方保存音量并引用它,但宁愿直接从AVPlayer读取值.