我在Github上有一个名为ITNavigationView的控件。
通过缓存并将其添加到NSView
,可以顺畅地从一个NSImageView
动画到另一个- (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];
}
。
缓存视图时,以x轴为中心的子视图将向右拉1个像素。
如果我改为添加前导约束,则不会发生这种情况。
如何防止这种情况发生?
要缓存视图,我正在使用此代码:
{{1}}
另外值得注意的是,只有在超级视图具有奇数宽度时才会发生这种情况。