在钛合金中,可以隐藏这样的视图:
$.foo.hide()
或
$.foo.visible = false
但是,在这两种情况下,对象似乎仍然需要物理空间。它只是看不见。换句话说,它类似于CSS属性visibility: hidden
。
我希望它能够消失,并且在宽度或高度方面没有任何物理空间,所以它类似于CSS属性display: none
我该怎么做?
我有最好的hacky解决方案如下:
$.foo.width = 0;
$.foo.height = 0;
$.foo.left = 0;
$.foo.right = 0;
但这意味着当我想让它再次可见时,我必须将所有这些属性设置回其原始值,这是一个痛苦且难以维护的。
答案 0 :(得分:1)
首先,不要害怕做一些硬编码;)
来到您的查询,是的,隐藏视图只是将其隐藏在UI中,但物理空间仍然存在。
要做你想做的事,你需要删除hide&上的视图。在节目中创建它,或者您可以以某种棘手的方式使用绝对布局。
其他方法可能是使用如下转换属性为此视图设置动画:
// 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
});
或强>
这也可行,但从未尝试过:
// on hide
$.foo.transform = Ti.UI.create2DMatrix({scale:0});
$.foo.visible = false;
// on show
$.foo.visible = true;
$.foo.transform = Ti.UI.create2DMatrix();