2015-10-16 101 views
2

我希望在屏幕上以全屏方式在屏幕上放置內容(現在是使用Air Server的MacBook Pro)。UIScreen在外部屏幕上的邊界比預期的要小

我使用https://github.com/quellish/AirPlayStoryboards的例子 - 這很好。但是,我發現兩個屏幕都不顯示全屏,因爲UIScreen的界限回到了太小 - iPad顯示的是一個較小的(letterboxed),而iPad屏幕只顯示左上角的四分之一屏幕(原產地)

任何想法,爲什麼這是?代碼:

- (void) application:(UIApplication *)__unused application didConnectScreen:(UIScreen *) screen 
{ 

UIStoryboard  *storyboard  = nil; 
UIWindow   *screenWindow = nil; 
UIViewController *tvViewController = nil; 

// Set up external screen 
UIScreen *secondaryScreen = [UIScreen screens][1]; 
UIScreen *primaryScreen = [UIScreen screens][0]; 

NSLog(@"Screen 1 (iPad): %@", primaryScreen); //print the bounds of the iPad 
NSLog(@"Screen 2 (MacBook): %@:", secondaryScreen); //print the bounds and size of the MacBook 

UIScreenMode *screenMode = [[secondaryScreen availableModes] lastObject]; 
CGRect bounds = secondaryScreen.bounds; 

// Create new outputWindow 
screenWindow = [[UIWindow alloc] initWithFrame:bounds]; 
screenWindow.screen = secondaryScreen; 
screenWindow.screen.currentMode = screenMode; 
[screenWindow makeKeyAndVisible]; 


[screenWindow setScreen:screen]; 

storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle bundleForClass:[self class]]]; 
tvViewController = [storyboard instantiateViewControllerWithIdentifier:@"TVViewController"]; 

[screenWindow setClipsToBounds:YES]; 
[screenWindow setRootViewController:tvViewController]; 
[screenWindow setHidden:NO]; 

// // If you do not retain the window, it will go away and you will see nothing. 
[[self windows] addObject:screenWindow]; 
} 

日誌語句返回如下:

Screen 1 (iPad): <UIScreen: 0x1567def0; bounds = {{0, 0}, {480, 320}}; mode = <UIScreenMode: 0x1567dd60; size = 1024.000000 x 768.000000>> 

Screen 2 (MacBook): <UIScreen: 0x15680280; bounds = {{0, 0}, {640, 400}}; mode = <UIScreenMode: 0x156804a0; size = 1280.000000 x 800.000000>>: 

有誰知道我怎麼可能會解決這個問題?

回答

0

你可以得到屏幕大小是這樣的:

UIScreen *secondaryScreen = [UIScreen screens][1]; 
    UIScreenMode *secondaryScreenMode = [[secondaryScreen availableModes] objectAtIndex: 0]; 
    CGSize sizeSecendaryScreen = secondaryScreenMode.size; 
    screenWindow = [[UIWindow alloc] initWithFrame:CGRectMake(0,0, sizeSecendaryScreen.width, sizeSecendaryScreen.height)]; 

編號:Setting UIScreen's mode/resolution

0

在我的情況下,沒有爲我要支持perticular分辨率沒有啓動圖像。例如:如果您要支持iPhone5,我們需要添加iPhone5大小的啓動圖像。 請檢查您的Xcode是否具有所有需要的啓動圖像。 這可能是您的解決方案。在我的情況下,它爲我工作!

相關問題