Я использую плагин PhoneGap ExternalScreen, но я немного изменил его, чтобы поддерживать несколько разрешений. Я получил несколько советов от должности Мэтта Геммель на iPadVGAOutput (http://mattgemmell.com/2010/06/01/ipad-vga-output/) Вот то, что мой код выглядит следующим образом:iOS Второй экран
- (void) toggleResolution:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
{
self.callbackID = [arguments pop];
if ([[UIScreen screens] count] > 1){
externalScreen = [[[UIScreen screens] objectAtIndex:1] retain];
screenModes = [externalScreen.availableModes retain];
UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:@"External Display Size"
message:@"Choose a size for the external display."
delegate:self
cancelButtonTitle:nil
otherButtonTitles:nil] autorelease];
for (UIScreenMode *mode in screenModes){
CGSize modeScreenSize = mode.size;
[alert addButtonWithTitle:[NSString stringWithFormat:@"%.0f x %.0f pixels", modeScreenSize.width, modeScreenSize.height]];
}
[alert show];
} else {
PluginResult* pluginResult = [PluginResult resultWithStatus:PGCommandStatus_ERROR messageAsString:WEBVIEW_UNAVAILABLE];
[self writeJavascript: [pluginResult toErrorCallbackString:self.callbackID]];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
UIScreenMode *desiredMode = [screenModes objectAtIndex:buttonIndex];
externalScreen.currentMode = desiredMode;
externalWindow.screen = externalScreen;
[screenModes release];
CGRect rect = CGRectZero;
rect.size = desiredMode.size;
externalWindow.frame = rect;
externalWindow.clipsToBounds = YES;
externalWindow.hidden = NO;
[externalWindow makeKeyAndVisible];
PluginResult* pluginResult = [PluginResult resultWithStatus:PGCommandStatus_OK messageAsString:WEBVIEW_OK];
[self writeJavascript: [pluginResult toSuccessCallbackString:self.callbackID]];
}
Разрешение меняется просто отлично, но содержимое не ограничено внутри правильных размеров. Пример выглядит следующим образом:
Когда второй экран первоначально загружен (при 1920х1080), это выглядит следующим образом: http://cl.ly/F5IV
После изменения разрешения до 1280x720, это выглядит следующим образом: http://cl.ly/F41K
Я Я относительно новичок в Objective-C, но быстро его подбираю. Любые указатели на решение моей проблемы и/или улучшение кода в целом были бы замечательными. Благодаря!
Эндрю
EDIT: Я также хотел бы уточнить, я не устанавливать любую ширину/высоту на любом из представлений и/или CSS, что отображается вручную.
Вы вынуждены использовать дополнительный экран? Можете ли вы разобраться с зеркалированием iOS? Я обнаружил, что зеркалирование обеспечивает гораздо лучший общий опыт по сравнению со вторым экраном. Это может не соответствовать вашим требованиям, но это стоит оценить. – Alan
Алан, к сожалению, мы вынуждены использовать второй экран, потому что второй экран имеет соотношение 16: 9, а iPad - 4: 3. Мы будем в основном зеркалировать, но если вы не знаете способ избавиться от черных полос, не записывая второй экранный код вручную, мы застряли! :( – andrewpthorp
Ahh ipad ... crap. Он отлично работает с iPhone4 в ландшафте. Я просто проверил наше приложение ipad на 30-дюймовом дисплее, и он имеет черные полосы. – Alan