gpt4 book ai didi

ios - MPVolumeView AirPlay 按钮不可见

转载 作者:可可西里 更新时间:2023-11-01 03:18:27 30 4
gpt4 key购买 nike

我已经开始在我的应用程序中使用 MPVolumeView,但是 Air Play 按钮根本没有出现。即使我有不止一台 Air Play 设备可用于将我的 AVPlayer 音频发送到网络上。例如,如果从控制中心检查 Air Play,就可以看到这些。

这是我的代码:

myVolumeView = [MPVolumeView new];
[myVolumeView setShowsVolumeSlider:YES];
[myVolumeView setShowsRouteButton:YES];
myVolumeView.frame = _volumePanel.bounds;
[myVolumeView sizeToFit];
_myVolumeView.autoresizingMask = UIAutoresizingFlexibleWidth;
[_volumePanel addSubview:myVolumeView];

很简单的东西。我有一个 AVPlayer 可以播放一些音乐,仅此而已。有趣的是,如果我从控制中心选择另一个 Air Play 设备,它会强制 Air Play 按钮出现在我的 MPVolumeView 上的应用程序中,但它有点小问题。

如果在 Xcode 中单击控制台上方的 Debug Hierarchy Mode 按钮,我可以在我的 UI 中看到 Air Play 按钮,但它的 Alpha 为 0。

最佳答案

这是一个完整而彻底的 hack,但它有效

   MPVolumeView* airplayButton = [[MPVolumeView alloc] init];

for (UIButton *button in airplayButton.subviews)
{
if ([button isKindOfClass:[UIButton class]])
{
[button addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];
}
}

然后在观察者中

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([object isKindOfClass:[UIButton class]] && [[change valueForKey:NSKeyValueChangeNewKey] intValue] != 1)
{
UIButton *airplay = (UIButton *)object;
[airplay setAlpha:1.0];
}
}

不要忘记在 dealloc 中关闭观察者

- (void)dealloc
{
for (UIButton *button in _airplayButton.subviews)
{
if ([button isKindOfClass:[UIButton class]])
{
[button removeObserver:self forKeyPath:@"alpha"];
break;
}
}
}

关于ios - MPVolumeView AirPlay 按钮不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585503/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com