钛合金 - 如何将视图从0高度设置为“自动”

时间:2014-03-20 14:14:03

标签: titanium appcelerator titanium-alloy

在钛合金中,我希望将视图从0的高度动画到高度为" auto"或Ti.UI.SIZE。视图包含一个标签,其中包含不同数量的文本,可以跨越多行,因此我需要将视图设置为仅显示标签所需的高度。我们的想法是,您单击一个按钮,它会激活视图和文本以滑动打开。类似于在网上看到很多的jQuery slideDown动画。

enter image description here

我遇到的问题是,如果我尝试动画到" auto"的高度。或Ti.UI.SIZE,动画似乎根本不会发生。动画到固定高度有效,但我需要它对视图内容的灵活性。

我的观点

<Button id="toggleBrandInfoBtn" onClick="toggleBrandInfo" title="Show Text" />
<View id="brandInfo" layout="vertical" height="0">
    <Label id="brandInfoLabel" text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor."></Label>
</View>

控制器

$.brandInfo.anchorPoint = {x:0, y:0};  

$.toggleBrandInfoBtn.addEventListener("click", function () {
    $.brandInfo.animate({
        anchorPoint: {x:1, y:1},
        top: 0,
        height: Ti.UI.SIZE,
        duration: 1000
    });
});

3 个答案:

答案 0 :(得分:2)

您是否尝试过百分比值?这不一定是文件记录,但我已经取得了一些成功。也尝试1%的起始值。

$.brandInfo.anchorPoint = {x:0, y:0};  

$.toggleBrandInfoBtn.addEventListener("click", function () {
    $.brandInfo.animate({
        anchorPoint: {x:1, y:1},
        top: 0,
        height: '100%',
        duration: 1000
    });
});

答案 1 :(得分:1)

从SDK 3.3.0开始,这是不可能的。

解决问题的另一种方法可能是从brandInfo visible = false和height Ti.UI.SIZE开始 从中获取内容和商店所需的视图高度。

然后,作为动画序列的一部分,将高度设置为零,使visible = true,然后将动画设置为先前存储的预先计算的高度。

答案 2 :(得分:1)

我有同样的问题,这个模块帮助了我:

https://github.com/animecyc/TitaniumAnimator