1

セルにカスタム サブビューを含む UITableView があります。ユーザーがセルでスワイプして削除ジェスチャを行うと、[削除] ボタンが表示されている間、ビューが一瞬縮小されます。

私が理解しているように、「削除」ボタンが表示され、サブビューを短くする必要があるときに発生するシステムアニメーションが原因で発生します。サブビューの contentMode を UIViewContentModeRedraw に設定すると、アニメーションが終了するとすべてが正常に見えます

これが組み込みのメールアプリケーションでどのように機能するかを調べたところ、すべて問題ありませんでした。

どうすればこの縮小を回避できますか? このアニメーションを「フェードアウト」などに変更することはできますか? または、このアニメーションが開始されてサブビューがすぐに短くなる瞬間を処理できますか?

解決:

最後に、次の方法で UITableViewCell をサブクラス化し、layoutSubviews メソッドをオーバーライドすることで解決策を見つけました。

- (void)layoutSubviews
{
    [super layoutSubviews];

    UIView *view = [self.contentView viewWithTag:101];
    CATransition *animation = [CATransition animation];
    animation.duration = 0.2f;
    animation.type = kCATransitionFade;
    [view.layer removeAllAnimations];
    [view.layer addAnimation: animation forKey:@"deletingFade"];
}

ありがとう!

4

2 に答える 2

2

このデリゲート メソッドを使用できます。

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = (UITableViewCell *)[tableView cellForRowAtIndexPath:indexPath];
    // do what ever you need to change in your cell
    return  YES;
}

(また)

TableViewCell では次のメソッドを利用できます。

- (void)willTransitionToState:(UITableViewCellStateMask)state
- (void)didTransitionToState:(UITableViewCellStateMask)state

You can change according to state if you are using customCell.
于 2012-09-19T13:52:23.527 に答える
1

layoutSubviews派生クラスのメソッドをオーバーライドし、セルUITableViewCellに応じてすべてのサブビューの位置を更新しますcontentView.bounds.size

于 2012-09-19T13:51:00.657 に答える