0

我在 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];
}

编辑

另外值得注意的是,这只发生在超级视图具有奇数宽度时。

4

0 回答 0