複数のサブビューを含むレイヤー付きビューをアニメーション化しています。すべてが自動レイアウトを使用してレイアウトされます。現在、ビューをアニメーション化すると、サブビューはそれに合わせてスケーリングされません。
全体を最終的なサイズで一度描画してから、アニメーションに合わせてスケーリングしたいと思います。layerContentsPlacement
とプロパティは私が探しているもののlayerContentsRedrawPolicy
ようですが、それらを変更しても効果がないようです。
アニメーションの実行方法の基本的な概要は次のとおりです。
// Add itemView to canvas
NSView *itemView = // ...
itemView.layerContentsPlacement = NSViewLayerContentsPlacementScaleProportionallyToFit;
itemView.layerContentsRedrawPolicy = NSViewLayerContentsRedrawBeforeViewResize;
[parentView addSubview:itemView];
// Add constraints for the final itemView frame ...
// Layout at final state
[parentView layoutSubtreeIfNeeded];
// Set initial animation state
itemView.alphaValue = 0.0f;
itemView.frame = // centered zero'ed frame
// Set final animation state
[NSAnimationContext runAnimationGroup:^(NSAnimationContext *context) {
context.duration = 0.25f;
context.allowsImplicitAnimation = YES;
itemView.alphaValue = 1.0f;
[parentView layoutSubtreeIfNeeded];
} completionHandler:nil];