0

在钛有可能隐藏像这样的视图:隐藏在钛的视图,使得其不采取物理空间

$.foo.hide() 

$.foo.visible = false 

然而,在两种情况下,对象似乎仍然需要物理空间。它只是看不见的。换句话说,它类似于CSS属性visibility: hidden

我想它,让它消失,不采取任何物理空间在宽度和高度方面,所以它类似于CSS属性display: none

我怎样才能做到这一点?

最好哈克解决方案,我有如下:

$.foo.width = 0; 
$.foo.height = 0; 
$.foo.left = 0; 
$.foo.right = 0; 

但是,这意味着,当我想让它再一次看到,我要回设置到其原始值所有这些特性,这是一个痛苦和很难维护。

回答

1

首先,不要害怕做一些硬编码的;)

来到您的查询,没错,这是事实,隐藏视图只是隐藏它从用户界面,但物理空间仍然存在。

做你想做什么,你需要将隐藏是删除视图&展出创建它,或者你可以在一些棘手的方式使用绝对布局

其他方式可以使用转换属性像这样的动画这样的观点:

// on hide 
$.foo.animate({ 
    duration : 100, 
    transform : Ti.UI.create2DMatrix({scale:0}) 
}, function() { 
    $.foo.visible = false; 
}); 


// on show 
$.foo.visible = true; // we need to make it visible again before resetting its UI state since we hid it after completion of animation in above code 
$.foo.animate({ 
    duration : 100, 
    transform : Ti.UI.create2DMatrix() // passing empty matrix will reset the initial state of this view 
}); 

OR

这也可以工作,但从来没有试过这样:

// on hide 
$.foo.transform = Ti.UI.create2DMatrix({scale:0}); 
$.foo.visible = false; 

// on show 
$.foo.visible = true; 
$.foo.transform = Ti.UI.create2DMatrix(); 
+0

二维矩阵方法似乎没有工作。它设法使视图消失,但不幸的是它仍然需要物理空间。 –

+0

尝试使用一些较小的缩放值(如0.05),如果它也不起作用,那么您唯一的选择是降低高度/宽度或删除/添加视图 –

+0

确认矩阵方法不适用于SDK 7.0.2 – fillobotto