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