2 일 동안이 문제를 해결하려고 시도했지만 포기합니다. 임명 된 airplay 단추를 실행하는 것을 시도해 Im (나는 배경을 백색 beacuse해야하고 단추는 검정이어야한다). 필자는 interfacebuilder에서 뷰를 추가하고 mpVolumeView를 선택했다. 그런 다음 연결을 만들고 다음 코드를 작성했습니다.airplay가 활성화되어있을 때 Airplay 버튼을 사용자 정의하는 방법
viewDidLoad.. {
.....
[_volumeView setShowsVolumeSlider:NO];
for (UIButton *button in _volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
[button setImage:[UIImage imageNamed:@"airplay_icon.png"] forState:UIControlStateNormal];
[button addObserver:self forKeyPath:@"alpha" options:NSKeyValueObservingOptionNew context:nil];
[button addTarget:self action:@selector(switchAirplayButton) forControlEvents:UIControlEventTouchUpInside];
[button sizeToFit];
}
}
[_volumeView sizeToFit];
}
-(void)switchAirplayButton {
for (UIButton *button in _volumeView.subviews) {
if ([button isKindOfClass:[UIButton class]]) {
NSLog(@"%d", _controlBar.player.airPlayVideoActive);
if(_controlBar.player.airPlayVideoActive) {
[button setImage:[UIImage imageNamed:@"airplay_icon_pressed.png"] forState:UIControlStateNormal];
} else [button setImage:[UIImage imageNamed:@"airplay_icon.png"] forState:UIControlStateNormal];
[button sizeToFit];
}
}
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if ([object isKindOfClass:[UIButton class]] && [[change valueForKey:NSKeyValueChangeNewKey] intValue] == 1) {
[(UIButton *)object setImage:[UIImage imageNamed:@"airplay_icon.png"] forState:UIControlStateNormal];
[(UIButton *)object sizeToFit];
}
}
"player"는 AVPLayer 기반의 싱글 톤입니다. 그러나 airPlay가 활성 상태인지 확인하는 경우 항상 false를 반환합니다. 어쩌면 단지 비디오를 사용하는 것이 아니라 사운드를 사용하는 것일 수도 있습니다.
내 질문은 어떻게하면 버튼을 변경할 수 있습니까 ... 오렌지가 하나의 인터페이스 (나머지 인터페이스와 일치하도록)를 말할 수 있습니다. 스트리밍 할 때 (사과가 파란색으로 바뀌는 것처럼). 나는 모든 것을 시도했지만 전혀 작동하지 않습니다. 도와주세요.
chikuba,이 문제를 어떻게 처리할까요? 내 VoIP 전화 iOS 앱에서 동일한 문제가 발생합니다. 제안을 할 수 있습니까? 감사! –