0

我正在为Android和IOS做一个应用程序。在这个应用程序中,我有一个窗口,我可以添加/删除包含内容的不同视图。

我希望第一个视图仅处于纵向模式,而其余视图可以处于任何方向。

我该怎么做?

使用钛 SDK 3.1.2,它或多或少在 IOS 上工作:

我的窗口:

var appWindow = Titanium.UI.createWindow({    
    top : 0,
    left : 0,
    height : utils.getScreenHeight(),
    width : utils.getScreenWidth(),    
    backgroundColor : "#393a3a",
    //fullscreen : true,    
    orientationModes : [Ti.UI.PORTRAIT, Ti.UI.UPSIDE_PORTRAIT],    
});

然后,当我想加载视图时:

var openWindow = function(e) {    
    appWindow.orientationModes = [Ti.UI.PORTRAIT, Ti.UI.UPSIDE_PORTRAIT, Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT];

    if (e.win == 'Home') {
        Titanium.UI.orientation = Titanium.UI.PORTRAIT;
        appWindow.orientationModes = [Titanium.UI.PORTRAIT];
        orientacion = 0;
        activeView = Home.Constructor(appWindow);
    } else if (e.win == 'configuracion') {
        Titanium.UI.orientation = Titanium.UI.PORTRAIT;
        orientacion = 0;
        appWindow.orientationModes = [Titanium.UI.PORTRAIT];
        activeView = Configuracion.Constructor(appWindow);
    } else if (e.win == 'Circle') {
        activeView = Circle.Constructor(appWindow);
    }
    appWindow.add(activeView);
};

现在,我想使用 SDK 3.1.3 来支持 IOS 7,但它不起作用,所有视图都不允许旋转。

你知道我该怎么做吗?

非常感谢

4

3 回答 3

4

我也没有在运行时更改 WindowsorientationModes 的运气。文档说必须在打开窗口之前设置窗口属性orientationModes及其方法。setOrientationModes

所以从视图切换到窗口不是一种选择?

如果您希望窗口允许与 tiapp.xml 中定义的方向不同的方向,则必须在每个窗口上单独设置orientationModes:

// This window allows orientations defined in tiapp.xml
var appWin = Ti.UI.createWindow({
    backgroundColor = '#FFF'
});
appWin.open();

// This window is portrait only
var win = Ti.UI.createWindow({
    backgroundColor: '#FFF',
    orientationModes: [Ti.UI.PORTRAIT]
});
win.open();

// If this window is opened it allows multiple orientations
var newWindow = Ti.UI.createWindow({
    backgroundColor: '#FFF',
    orientationModes: [Ti.UI.PORTRAIT, Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT]
});
newWindow.open()

这是使用 SDK 3.1.3 测试的。


编辑
要使这项工作在 Android 上运行,您必须通过设置fullscreen: true或强制使用重量级窗口navBarHidden: true

于 2013-10-03T19:35:16.980 回答
0

您可以根据需要创建自定义AndroidManifest.xml和设置screenOrientation属性activities。-

android:screenOrientation="portrait"

更多信息在这里

于 2013-10-03T17:42:58.560 回答
0

使用钛 SDK 3.1.2,我将以下代码用于:

Titanium.UI.orientation = Titanium.UI.PORTRAIT;
appWindow.orientationModes = [Titanium.UI.PORTRAIT];

然后,当您加载其他视图时,然后输入:

appWindow.orientationModes = [Ti.UI.PORTRAIT, Ti.UI.UPSIDE_PORTRAIT, Ti.UI.LANDSCAPE_LEFT, Ti.UI.LANDSCAPE_RIGHT];
于 2013-10-03T17:54:10.080 回答