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];
}
編集
また、これはスーパービューの幅が奇数の場合にのみ発生することにも注意してください。