Kor*_*nel 32 macos interface-builder nsview osx-yosemite
在约塞米蒂,侧边栏具有半透明的"活力"背景.如何在10.10/Xcode 6中创建类似的视图?
我可以给出任何观点这样的背景吗?我发现NSOutlineView
当你给它"源列表"突出显示样式时会默认为这样的背景,但Calendar.app中的侧边栏似乎不是NSOutlineView,所以我想知道是否有一个通用的解决方案.
Kor*_*nel 45
w00t!我找到了使用尚未记录的视图类型的示例代码:
NSVisualEffectView
还有NSView
一种方法allowsVibrancy
可以覆盖返回YES
,但由于我还不明白的原因,我的情况并没有启用活力.
Con*_*lon 20
随着Yosemite版OSX操作系统的推出,Apple 向Cocoa窗口和窗口组件引入了一种名为vibrancy的新模式,这是一种光扩散模糊.这有点像通过淋浴门看,并使用NSVisualEffectView
.Apple 在这里解释了这个效果.
我在NSView上使用这个类别.只需打电话给您想要充满活力的视图.它也与优胜美地前向兼容.(如果你有一个前约塞米蒂,你将看不到效果)
@implementation NSView (HS)
-(instancetype)insertVibrancyViewBlendingMode:(NSVisualEffectBlendingMode)mode
{
Class vibrantClass=NSClassFromString(@"NSVisualEffectView");
if (vibrantClass)
{
NSVisualEffectView *vibrant=[[vibrantClass alloc] initWithFrame:self.bounds];
[vibrant setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
// uncomment for dark mode instead of light mode
// [vibrant setAppearance:[NSAppearance appearanceNamed:NSAppearanceNameVibrantDark]];
[vibrant setBlendingMode:mode];
[self addSubview:vibrant positioned:NSWindowBelow relativeTo:nil];
return vibrant;
}
return nil;
}
@end
Run Code Online (Sandbox Code Playgroud)
来自@Volomike的详细说明关注......
添加AppKit.framework到您的项目设置>构建阶段> 链接二进制与图书馆,以便它可以识别NSVisualEffectView.
做一个出口委托你的主窗口的默认视图,而不是窗口本身,你AppDelegate.m或AppDelegate.mm文件.(如果您是新手,请阅读本教程.)出于此目的,我们假设您将其命名为mainview
,然后在代码中可以寻址_mainview
.
在项目中包含该类别.如果您是新手,请@implementation
在AppDelegate.m或AppDelegate.mm文件中的任何行之前添加类别.
在您的AppDelegate.m或AppDelegate.mm文件中@implementation AppDelegate
,在您的applicationDidFinishLaunching
类方法中,添加以下代码行:
[_mainview insertVibrancyViewBlendingMode:NSVisualEffectBlendingModeBehindWindow];
Run Code Online (Sandbox Code Playgroud)
现在的净效果是,标题栏下方的整个窗口,或者只有你想要的部分(如侧边栏),都会显示出这种活力效果.
归档时间: |
|
查看次数: |
22078 次 |
最近记录: |