问题标签 [nsvisualeffectview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3732 浏览

macos - 如何使用 NSVisualEffectView 向后兼容 OSX < 10.10?

即将推出的 OSX 10.10(“Yosemite”)提供了一种新型视图 NSVisualEffectView,它支持通过窗口或窗口内的半透明。我最感兴趣的是通过窗口半透明,所以我将在这个问题中关注它,但它也适用于窗口内半透明。

在 10.10 中使用透窗半透明是微不足道的。您只需NSVisualEffectView在视图层次结构中放置一个位置并将其设置blendingModeNSVisualEffectBlendingModeBehindWindow. 这就是它所需要的。

在 10.10 下,您可以NSVisualEffectView在 IB 中定义 s,设置它们的混合模式属性,然后您就可以开始运行了。

但是,如果您想向后兼容早期的 OSX 版本,则不能这样做。如果您尝试NSVisualEffectView在您的 XIB 中包含一个,您将在尝试加载 XIB 时立即崩溃。

我想要一个“设置它并忘记它”的解决方案,它在 10.10 下运行时会提供半透明效果,而在早期操作系统版本上运行时会简单地降级为不透明视图。

到目前为止,我所做的是使有问题的视图成为 XIB 中的普通 NSView,然后添加检查 的代码(由 awakeFromNib 调用),[NSVisualEffectView class] != nil当它定义了类时,我创建了一个 NSVisualEffectView 的实例,将我当前视图的所有子视图移动到新视图,并将其安装到位。这行得通,但是每次我想要半透明视图时,我都必须编写自定义代码。

我认为这可能使用 NSProxy 对象。这就是我的想法:

定义一个自定义的 NSView 子类(我们称之为 MyTranslucentView)。在所有初始化方法(initWithFrame 和 initWithCoder)中,我会丢弃新创建的对象,而是创建一个具有私有实例变量(myActualView)的 NSProxy 子类。在初始化时,如果 OS>=10.10,它将决定将 myActualView 对象创建为 NSVisualEffectView,并在 OS<10.10 下创建正常的 NSView。

代理会将所有消息转发到它的 myActualView。

这将是相当繁琐的低级代码,但我认为它应该可以工作。

有没有人做过这样的事情?如果是这样,你能指出我正确的方向或给我任何指示吗?

与之前的 Beta 相比, Apple与 Yosemite 的 Beta 协议更加开放我不认为我通过笼统地谈论这个违反了我的 Beta NDA,但实际使用的代码NSVisualEffectView可能需要在 NDA 下共享......

0 投票
1 回答
907 浏览

objective-c - 10.10 通过 TitleBar 的源列表?

只是好奇如何完成这种自定义的列式应用程序视图。源列表直接通过标题栏,但只是在一方面,我猜他们隐藏了标题栏,也许然后使用了 NSVisualEffectView?任何源代码或提示都值得赞赏,它非常酷,而且从我看到的优胜美地应用程序的 UI 元素中得到了相当广泛的使用。

直接通过 NSTitleBar 的半透明源列表

这张照片中的搜索栏和添加列表按钮显然在不同的视图中,我完全理解具有 SourceList 样式的 NSOutlineView 会在 10.10 中自动创建这种效果,但按钮和搜索字段不能在源中列表滚动区域,但它们的背景与源列表的背景一致,这让我认为这种效果更多基于视图而不是基于源列表。

0 投票
6 回答
7084 浏览

objective-c - 如何使用 NSVisualEffectView 制作一个平滑、圆润、类似体积的 OS X 窗口?

我目前正在尝试制作一个看起来像 Volume OS X 窗口的窗口:
在此处输入图像描述


为了做到这一点,我有自己的NSWindow(使用自定义子类),它是透明/无标题栏/无阴影的,NSVisualEffectView它的 contentView 内部有一个。这是我的子类的代码,用于制作内容视图:


这是结果(如您所见,角落是颗粒状的,OS X 更平滑):
在此处输入图像描述
关于如何使角落更平滑的任何想法?谢谢

0 投票
1 回答
2513 浏览

objective-c - 如何在 NSVisualEffectView 上覆盖背景颜色并使用充满活力的控件?

我想使用NSVisualEffectView深色活力,但我发现在某些情况下效果太淡,所以我想使背景变暗。

这是一个示例应用程序,使用NSBox视图来提供较暗的背景。

在此处输入图像描述

我们可以看到NSBox“主要”外观设法覆盖了背景,并且按钮愉快地位于其之上。但是,在NSBox具有自定义外观的情况下,按钮似乎会“切入”背景到下方的视觉效果视图。

我尝试过子类化NSVisualEffectView和覆盖-drawRect:以用不同的颜色填充它,结果是一样的。

有没有办法将充满活力的控件覆盖在其他视图上?

0 投票
4 回答
2952 浏览

macos - 如何获取源列表选择突出显示以在 OS X 10.10 中使用 Dark Vibrancy 外观?

在 OS X 10.10 源列表中似乎使用了轻快的外观。在 Finder(以及在其他一些第三方应用程序中,例如 Things.app)中,源列表中的选定项目由深色活力外观指示。例如,请参见下图中的桌面行。

我怎样才能复制这种行为?我是否需要使用委托方法来指定表格行视图,

并尝试自己进行自定义绘图,还是有更直接的方法?如果您在 Xcode 中创建标准源列表 UI,则默认突出显示仍然是我们在以前版本的 OS X 中看到的标准蓝色矩形。

源列表采用浅活力风格,所选项目较暗(使用深色活力风格)

0 投票
2 回答
1450 浏览

objective-c - 是否可以控制优胜美地中半透明/模糊背景的活力量?

我想知道是否可以控制 Yosemite 最近引入的所谓的活力效果中的半透明量,这可以通过使用NSVisualEffectView类在 Objective-C 应用程序中实现。

这是一个更具体的例子。考虑 Yosemite OS X 在音量变化时显示的半透明效果:

优胜美地

活力比使用简单获得的要强得多NSVisualEffectView(如下图所示)

NSVisualEffectView

如果我们比较这两个图像——请忽略扬声器的不同形式,但专注于背景——我们会看到 Yosemite OS X 音量窗口中的振动量(高斯模糊效果的强度)要强得多,而不是我的应用程序使用NSVisualEffectView. 怎么能得到呢?

0 投票
2 回答
1946 浏览

objective-c - NSScrollView 后面的 NSVisualEffectView

我试图让我的NSScrollView(因此是包含的NSOutlineView)使用模糊NSVisualEffectView的窗后混合效果。

我已经成功地制作NSVisualEffectView了容器视图并将我的滚动视图放置为子视图。这似乎工作正常(只要我使所有表格单元格、表格、nsscrollview 等透明)。

但是,我现在在辅助功能选项下打开了“降低透明度”,突然之间,我的NSScrollView. 我尝试子类化视觉效果视图以覆盖该drawRect方法,以便我可以绘制自己的背景,但我刚刚了解到这是不可能的或不推荐的。

如何检测到“降低透明度”已打开以及如何使我的滚动视图动态不透明?

0 投票
2 回答
1911 浏览

macos - 在源列表 NSTableView 中禁用 NSVisualEffectView

我有一个旧应用程序,它具有基于 NSCell 的 NSTableView 的特定外观,具有突出显示源列表。不幸的是,在 Yosemite 上,这会在所选单元格下添加 NSVisualEffectView 活力,这会以令人不快的方式破坏外观。

不幸的是,我找不到退出这种行为的方法。设置常规突出显示以另一种方式破坏外观(灰色选择而不是蓝色)。

知道是否有办法在 10.10 上选择退出此行为?

0 投票
0 回答
1066 浏览

cocoa - NSVisualEffectView 顶部的 NSTextField 与 WantLayer 别名问题

我知道当使用核心动画层(CALayer)时,NSTextField 后面必须有纯色背景色,因为不支持子像素,但是我需要在我的NSVisualEffectView后面使用NSOutlineView,并且我在顶部使用了几个 NSTextField。如果我为 YES 设置wantsLayer为 YES NSOutlineView,可悲的是,顶部的文本变得混叠​​很差。如何在顶部获得漂亮的模糊和平滑文本?CALayer这是否意味着我们在使用它的超级视图时根本不能使用NSVisualEffectView

0 投票
1 回答
167 浏览

macos - 用 NSVisualEffectView 替换 IKImageBrowserView 的超类

我想让我的 IKImageBrowserView 的背景具有模糊的背景。根据Apple 文档,IKImageBrowserView 基于 NSView。是否可以让 IKImageBrowserView 从 NSVisualEffectView 继承,以便我可以让背景看起来模糊。我假设要开始我必须继承 IKImageView,但我不确定下一步该去哪里。有人可以指出我正确的方向吗?

谢谢