I have this control called ITNavigationView on Github.
It's smoothly animating from one NSView
to another by caching and adding them to a NSImageView
.
When caching the view, a subview centred in the x axis will be pulled exactly 1 pixel to the right.
If I instead add a leading constraint, this doesn't happen.
How can I prevent this from happening?
To cache the view, I'm using this code:
- (NSImage *)imageOfView:(NSView *)view {
[view layoutSubtreeIfNeeded];
[view setNeedsUpdateConstraints:YES];
[view updateConstraintsForSubtreeIfNeeded];
NSBitmapImageRep* rep = [view bitmapImageRepForCachingDisplayInRect:view.bounds];
[view cacheDisplayInRect:view.bounds toBitmapImageRep:rep];
return [[NSImage alloc] initWithCGImage:[rep CGImage] size:view.bounds.size];
}
EDIT
Also worth noting is that this only happens when the superview has an odd width.