pkl*_*luz 5 macos core-animation transformation appkit nswindow
所以我对AppKit和Cocoa(来自UIKit和CocoaTouch)相当新,我正在实现一个折叠NSWindow的界面.在iOS上,这将是相当容易的,但看看OS XI选择提出的许多细微差别.
您将如何实施以下过渡?

注意:底栏是我的contentView的一部分,而不是OS X提供的底栏.即我的窗口(顺便说一下INAppStoreWindow)由titleBar和contentView组成.
我想我可以只是折叠contentView并同步调整窗口的大小,但如果我能够在折叠时保留透明度,这是因为透视转换所致.即向内弯曲的侧面(在过渡期间)应该是透明的.还是我在思考这个?
首先是坏消息:与 UIKit 不同,AppKit 不使用 Core Animation 来渲染其控件。所有 CALayers 都在 NSView 的特殊层托管实例中拥有自己的世界。因此,除非您的窗口的内容视图是图层托管的,否则您无法将 CAAnimations 应用于整个窗口的内容,而无需相当程度的黑客攻击(可以将整个内容视图渲染为位图,将其设置为图层的内容,然后对其执行转换。我不确定)。
希望您的内容视图是基于核心动画的。如果是这样,您描述的方法应该有效。您还应该能够将图层托管在透明的无边框 NSWindow 中,然后您对内容视图所做的任何转换都将显示其后面的桌面。这是一个片段(来自 Matt Long),应该可以满足您的需求:
- (id) initWithContentRect: (NSRect) contentRect
styleMask: (unsigned int) aStyle
backing: (NSBackingStoreType) bufferingType
defer: (BOOL) flag
{
if (![super initWithContentRect: contentRect
styleMask: NSBorderlessWindowMask
backing: bufferingType
defer: flag]) return nil;
[self setBackgroundColor: [NSColor clearColor]];
[self setOpaque:NO];
return self;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
526 次 |
| 最近记录: |