我正在使用iPhone 4S玩AirPlay,我遇到了一些麻煩。我已將Apple TV 2更新至最新版本(4.4.3我認爲?我忘記了,它在另一個房間中,我懶得檢查),並且我在使用Xcode 4.2 Build 4D199時在我的4S上安裝了iOS 5.0 。我寫了一個簡單的UIView應用程序,試圖在可用時在第二個屏幕上繪製。下面是我在viewDidLoad中:如何使用iOS 5+ AirPlay作爲第二個屏幕
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view addSubview:[[MPVolumeView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)]];
NSLog(@"Registering for screen connect events...");
// Do any additional setup after loading the view, typically from a nib.
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidConnect:)
name:UIScreenDidConnectNotification
object:nil];
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(screenDidDisconnect:)
name:UIScreenDidDisconnectNotification
object:nil]; NSLog(@"There are %i connected screens.", ScreenCount);
if (ScreenCount > 1) {
self.secondWindow = [self myScreenInit:[[UIScreen screens] objectAtIndex:1]];
[self.secondWindow addSubview:[self createFullscreenViewForText:@"Second window" withSize:CGSizeMake(640, 480)]];
}
}
這段代碼在模擬器中工作時,我讓TV輸出,雖然它總是崩潰,如果我讓TV輸出,而在調試。在模擬器的硬件菜單中啓用TV之後,我必須重新啓動應用程序。在重新啓動時,我在第二個屏幕上看到第二個屏幕UILabel。在iPhone 4S上,只有在運行任務欄中的AirPlay控件啓用AirPlay到左側時,我才能完成此項工作。你會注意到我已經在啓動時添加了一個MPVolumeView組件,我試圖用它來連接到我的Apple TV無濟於事。
如果我使用應用程序MPVolumeView,我可以成功從Apple TV斷開連接,但是當我再次使用它並選擇Apple TV重新連接時,我不會收到UIScreenDidConnectNotification。我再次看到第二個屏幕的唯一時間是啓用鏡像時。如果我與AirPlay控制器連接,則只能計數1個屏幕,並且不會收到通知。此外,每當我讓我鏡像看到在控制檯日誌:
Could not find mapped image ColorOnGrayShadow_AirPlay.png
這似乎被打破,我想知道別人的經驗一直在這個領域。當我學習新事物時,我會繼續玩弄並更新這篇文章。
我在與MPVolumeView不給另一個屏幕完全相同的問題。我有一個問題讓內容進入第二臺顯示器,但事實證明,這是因爲我沒有保留窗口對象。不過,如果不需要使用鏡像來實現這個功能,那就太好了。 – Jeff
嘿懸崖 - 任何想法如何控制另一個屏幕?我不知道如何做到這一點。謝謝! – TommyG
如果您的意思是通過AirPlay控制第二個屏幕,那麼使用AirPlay的API訪問第二個屏幕就是一個問題。你有一個參考它,然後你可以繪製或放置任何你想要的東西。 – Cliff