2015-10-16 7 views
2

Я хочу разместить контент на внешнем экране (на данный момент MacBook Pro с использованием Air Server) в полноэкранном режиме с экраном на планшете.Ограничение UIScreen меньше, чем ожидалось, на внешнем экране

Я использую пример от https://github.com/quellish/AirPlayStoryboards - это замечательно. Тем не менее, я обнаружил, что ни один экран не отображает полный экран, потому что границы UIScreen возвращаются слишком маленькими - iPad выглядит немного меньше (почтовый ящик), а экран iPad отображает только 1/4 экрана в верхнем левом углу (происхождение)

Любая идея, почему это так? Код:

- (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)]; 

Ref: Setting UIScreen's mode/resolution

0

В моем случае не было запуск изображения для perticular разрешения, для которого я хочу поддержать. Например: если вы хотите поддерживать iPhone5, нам нужно добавить изображение запуска размером с iPhone5. Проверьте свой Xcode, есть ли у вас все необходимые изображения запуска или нет. Это может быть ваше решение. В моем случае это сработало для меня!

 Смежные вопросы

  • Нет связанных вопросов^_^