0

伙计们,我在“方向更改”上遇到“如何调整大小”弹出框的问题。请拿Demo source-code

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

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

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

  • 点击按钮。

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

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

    => 检查方向改变时,弹出框大小正在改变,但内部内容(表格视图)的大小没有改变。所以,它会在 Tableview 周围留下蓝色的空白部分。

请让我知道是否有任何方法可以治疗 Popovers 并赢得他们的心。

谢谢。

4

2 回答 2

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) 
}

我注意到的一件事是,您在事件侦听器中创建了表和弹出框,这意味着每次单击标签时,都会创建一个新的 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();

});

在手势事件监听器中设置表格宽度而不是弹出框宽度

[...]
    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

于 2012-09-19T12:34:23.903 回答
0

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

购票链接

于 2012-09-24T06:16:38.807 回答