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 ではデフォルトでアニメーション化されます。setTimeoutデフォルトのアニメーションは、たとえば標準のJavaScript 関数を使用して作成したカスタム アニメーションをオーバーライドします。

難しいのは、行のコンテンツもアニメーションで表示することです。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 に答える