4

我正在使用 Titanium iphone 中的表格视图。我尝试为每一行添加动画样式。

也就是说,当用户点击每一行时,行高需要增加,所以我可以在行中显示隐藏的内容。当用户再次单击时,行高需要减小。

我的代码是,对于折叠视图,

var animation = Ti.UI.createAnimation({height: 1, duration: 500});
row.animate(animation);

为了扩大视野,

row.animate(Ti.UI.createAnimation({ height:200, duration:300 });

但以上两个代码都不起作用,

如果我在不使用动画的情况下设置行高,那么它工作正常。 如何为表格视图行应用动画样式......任何人都可以。

4

3 回答 3

4

你可以试试这个

http://developer.appcelerator.com/question/119198/animating-row-height-changes

TableViewRow 无法设置动画。这是文档错误。您需要制作自己的动画函数(即setTimeout)。

于 2013-04-23T11:42:40.597 回答
0

当您更改行的高度时,默认情况下(在 iOS 上)是动画的,所以:

row.height = '40dp';
于 2013-04-23T12:37:40.033 回答
0

如果将行高直接设置为数值,则在 iOS 上默认为动画。默认动画将覆盖您可能想出的任何自定义动画,例如使用标准setTimeoutjavascript 函数。

困难在于使行内容也显示为动画。假设row.details指向一个容器视图,该视图包含要在展开时显示的隐藏行详细信息。它的高度最初将设置为零。以下代码将以平滑的方式为整行设置动画:

var total_height_increase = 260;
var height_step = 5;
var duration = 200;
var time_step = duration * height_step / total_height_increase;
var num_steps = duration / time_step;
var i=0;
var increase_height = function(){
    setTimeout(function(){
        row.details.height += height_step;
        i += 1;
        if (i > num_steps) return;
        increase_height();
    }, time_step);          
};
increase_height();
row.height += total_height_increase;
于 2016-08-14T10:04:44.470 回答