Thanks to David's comment I switched to using a transform on the view's layer.
The basic idea is to create and layout your view as you normally would, then create and add some CA animations to the view's layer.
// Add item view to canvas
NSView *itemView = // ...
[parentView addSubview:itemView];
// Add constraints for the final item view positioning
// Layout at final state
[parentView layoutSubtreeIfNeeded];
// Animate
CABasicAnimation *animation = [CABasicAnimation animation];
CATransform3D transform = CATransform3DMakeScale(0.5f, 0.5f, 0.5f);
animation.fromValue = [NSValue valueWithCATransform3D:transform];
animation.duration = 1.0f;
[itemView.layer addAnimation:animation forKey:@"transform"];
// create any other animations...