发生方向更改时Ti.UI.iPad.createPopover大小调整问题

时间:2012-09-18 06:43:05

标签: uipopovercontroller titanium-mobile appcelerator-mobile orientation-changes

伙计我在“方向改变”上遇到“如何调整大小”问题的问题。请带Demo source-code

执行以下步骤以重新生成问题:

  • 下载附带的源代码,打开并运行它。 :)

    =>你会看到一个白色的窗口,窗口的中间只有一个未命名的按钮。

  • 点击按钮。

    =>它将从按钮打开Popover控件。它包含一个空白的Tableview。

  • 从肖像< - >更改iPad方向横向。

    =>检查方向更改时,弹出窗口大小是否正在更改但内部内容的大小(Tableview)未更改。因此,它在Tableview周围留下了蓝色的空白部分。

请告诉我是否有任何答案可以治疗突击并赢得他们的心。

感谢。

2 个答案:

答案 0 :(得分:0)

我建议,而不是改变弹出窗口的大小,改变表格的高度和宽度,并使用一个简单的辅助函数使弹出窗口调整大小(就像这样:)

function resizepopover () {
    popover.height = popover.children[0].height;
    popover.width = popover.children[0].width   
    Ti.API.info("Popover Width: " + popover.width)
    Ti.API.info("Table Width:" + table.width)
    Ti.API.info("Popover height: " + popover.height)
    Ti.API.info("Table height:" + table.height) 
}

有一点,我注意到,你在eventlistener中创建了Table和popover, 这意味着每次单击Label时,都会创建一个新的Popover实例和一个新的表实例(它应该会收集垃圾,因为你每次都会覆盖它,并且不应再对旧的引用了)但是我会避免它

在eventlistener之外创建popover和table。 而点击事件功能你只需调用popover的show方法即可 resizepopover方法。

var     popover = Ti.UI.iPad.createPopover({
        title : 'Search',
        arrowDirection : Ti.UI.iPad.POPOVER_ARROW_DIRECTION_UP,
        backgroundColor : 'white',
        layout: 'horizontal',
        height:"auto",
        width:"auto"
});
    var table = Titanium.UI.createTableView({
        top: 0,
        left: 0,
        right: 0,
        bottom: 0,
        height:900,
        width:700
    });
    popover.add(table);

label1.addEventListener('click', function (e) {
    popover.show({
        view : label1,
        animated : true
    });
    resizepopover();

});
在Gesture事件中的

Listener设置表格宽度而不是弹出框宽度

[...]
    if(root.ui.isPortrait || root.ui.isLandscape) {

        if(root.ui.isPortrait) {
            table.width = 600;

            table.height = 800;

            Ti.API.info('Portrait');
        } else {
            table.width = 800;
            table.height = 600;
            Ti.API.info('Landscape');

        }

        resizepopover();

    }
[...]

那是一个可能的方式,

我在Dropbox

上添加了一个Resources.zip

答案 1 :(得分:0)

Titanium为此问题创建了票证,这是他们的内部错误。

Ticket Link