我有一个两格NSSplitView,它的一个子视图是IKImageBrowserView。在使用 CATransition 为NSSplitView设置动画之前,我需要捕获它的位图以交换到位。
usingcacheDisplayInRect
不会捕获IKImageBrowserView内容,但会捕获其他窗格的内容。我认为这可能与IKImageBrowserView拥有自己的图层树有关。
有人可以确认这是真的吗?
NSBitmapImageRep *imageRep = [self.imagesSplitView bitmapImageRepForCachingDisplayInRect:visibleRect];
[self.imagesSplitView cacheDisplayInRect:visibleRect toBitmapImageRep:rep];
NSImage *tempImage = [[NSImage alloc] initWithCGImage:[imageRep CGImage] size:visibleRect.size];
[self.tempView setImage:tempImage];
[self.holdingView replaceSubview:self.imagesSplitView with:self.tempView];
关于如何获取视图内容的位图副本有什么建议吗?
renderInContext
不会帮助我,我不认为,因为IKImageBrowserView没有透露引用它的presentationLayer的方法——如果它甚至有一个。
我认为ImageKit是CALayers/CAOpenGLLayers和alchemy的组合。
谢谢。