Кордова iOS меняет ориентацию экрана на пейзаж на одной странице
У меня есть приложение, разработанное в Cordova 3+ для iPhone. В настоящее время приложение работает нормально. Я также ограничил ландшафтный вид текущего приложения, то есть приложение отображалось только в портрете.
Приложение состоит из большого количества описаний и страницы отчета. Я хочу отображать все страницы в портрете и отображать страницу отчетов в Пейзаже.
Iam с использованием Backbone.js + underscore.js framework.
- Обнаружение браузера iPhone
- IPhone Safari: прокрутка списка внутри контейнера html
- Сайт javascript не работает на iphone (сафари)
- IOS Javascript engine parseFloat (1) возвращает отрицательное число
- Доступ к API Google из собственного приложения iPhone
У кого-нибудь есть какое-либо предложение или решение для этого?
Заранее спасибо!
Изменить: то, что я хочу, – это заставить эту страницу отчета отображать в ландшафтном представлении. И отобразить всю другую страницу в портрете.
Изменить: программно контролировать ориентацию экрана в iPhone для кордовы 3+
- Исправление автоматического наведения iOS?
- Чтение UDID из Iphone с помощью javascript на мобильном сафари
- Слишком большой ответ AJAX для мобильного сафари?
- QuotaExceededError: исключение Dom 22: Была сделана попытка добавить что-то к хранилищу, которое превысило квоту
- Как мне сделать перетаскивание двумя пальцами с помощью javascript / jquery?
- Обнаружить конкретную модель iPhone / iPod touch в Javascript
- Как я могу запретить iPhone (включая iOS 7) переходить в спящий режим в HTML или JS?
- Обнаружить изменение ориентации iPad
Однако я не мог найти никаких решений. Atlast я достиг этого с помощью CSS.
-ms-transform:rotate(-90deg); /* IE 9 */ -webkit-transform:rotate(-90deg); /* Chrome, Safari, Opera */ transform:rotate(-90deg); /* Standard syntax */
В любом случае это не идеальное решение, но оно работает.
И вы можете программно изменить одну страницу на альбом с использованием собственного кода и вызвать его с помощью javascript.
Создайте новый файл js как ScreenOrientation.js и вставьте приведенный ниже код,
var ScreenOrientation = { //alert(orientation); callScreenOrientationNative: function(success,fail,orientation) { return Cordova.exec( success, fail, "ScreenOrientation", "screenorientationFunction", [orientation]); } };
И добавьте указанный выше файл в index.html, как показано ниже,
<script type="text/javascript" src="ScreenOrientation.js"></script>
Добавьте функцию ниже в любой добавленный js-файл (в моем проекте я добавил файл script.js для добавления общих функций),
function callScreenOrientation(orientation) { ScreenOrientation.callScreenOrientationNative(nativePluginResultHandler,nativePluginErrorHandler,orientation); } function nativePluginResultHandler (result) { } function nativePluginErrorHandler (error) { }
В config.xml добавьте ниже имя функции,
<!-- Screen Orientation custom plugin to display reports page. --> <feature name="ScreenOrientation"> <param name="ios-package" value="ScreenOrientation"/> </feature>
В разделе «Плагины» добавьте (для кордовы <3.0),
<plugins> <plugin name="ScreenOrientation" value="ScreenOrientation" /> </plugins>
На проектах Кордовы> Плагины щелкните правой кнопкой мыши и выберите новый файл, затем выберите iOS, выберите Cocoa touch, затем выберите Object-C Class и нажмите «Далее», в имени класса вставьте «ScreenOrientation» и в подкласс «CDVPlugin» и нажмите «Далее» и нажмите «Создать».
Введите ниже в ScreenOrientation.h,
#import <Cordova/CDV.h> @interface ScreenOrientation : CDVPlugin - (void) screenorientationFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options; @end
Введите ниже в ScreenOrientation.m,
#import "ScreenOrientation.h" @implementation ScreenOrientation - (void) screenorientationFunction:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options { [arguments pop]; NSString *orientation = [arguments objectAtIndex:0]; if ( [orientation isEqualToString:@"LandscapeLeft"] ) { NSLog(@"Landscape Left"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeLeft]; } else if ( [orientation isEqualToString:@"LandscapeRight"] ) { NSLog(@"Landscape Right"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationLandscapeRight]; } else if ( [orientation isEqualToString:@"Portrait"] ) { NSLog(@"Portrait"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortrait]; } else if ( [orientation isEqualToString:@"PortraitUpsideDown"] ) { NSLog(@"Portrait upSide Down Left"); [[UIApplication sharedApplication] setStatusBarOrientation: UIInterfaceOrientationPortraitUpsideDown]; } } @end
В проекте «Кордова» нажмите «Поиск» и найдите «shouldAutoRotate» и найдите ниже и измените значение возврата, по умолчанию «YES» изменит его на «NO».
CDVViewController.m
- (BOOL)shouldAutorotate { return NO; }
И в настройках проекта, в настройках устройства проверяют все параметры (не важно, хотя),
Project Settings > Device orientation > Tick all 4 options.
И назовите его из своего проекта, как это,
callScreenOrientation('LandscapeLeft'); callScreenOrientation('LandscapeRight'); callScreenOrientation('Portrait'); callScreenOrientation('PortraitUpsideDown');
Ознакомьтесь с этой ссылкой для плагина ориентации.
Этот плагин позволяет программно поворачивать экран на iOS и Android.
https://github.com/kant2002/cordova-plugin-screen-orientation
Ротация Android имеет видимые сбои из-за производительности (ваш пробег может варьироваться в зависимости от размера DOM), но при вращении iOS отлично.