4

アニメーション化する特定のNSViewがありますが、そのNSViewにはNSTableViewがあり、ビューがレイヤーバックされている場合は正しく表示されません(ビューをアニメーション化するために必要です)。だから私の答えは、アニメーションの直前にビューをレイヤーバックにし、アニメーションが完了したら、次のようにレイヤーを削除することでした。

[animatingView setWantsLayer: YES];

[NSAnimationContext beginGrouping];

[[animatingView animator] animateSomething];

[[NSAnimationContext currentContext] setCompletionHandler: ^{
    [animatingView setWantsLayer: NO];
}];

[NSAnimationContext endGrouping];

ただし、このコードでは、ビューはまったくアニメーション化されません。行を削除すると、[animatingView setWantsLayer: NO];適切にアニメーション化されますが、テーブルビューが正しく表示されないことがわかりました(問題の1つの例については、この質問を参照してください)。

だから、私の質問は:どうすればこれを解決できますか?ビューをアニメーション化したいのですが、テーブルを正しく表示したいので、この回避策は機能しません。そして、私は理由がわかりません...

4

1 に答える 1

2

NSView をレイヤーでサポートすると、元に戻すことはできません。

NSTableView を子ではなく、レイヤーに基づくビューの兄弟にすることをお勧めします。

于 2013-04-01T17:19:45.913 に答える