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