如何使Web视图的一部分略微半透明?

时间:2015-12-29 05:02:08

标签: objective-c macos cocoa webview alpha-transparency

在使用Objective-C Mac OSX的{​​{1}}中,有没有办法让Cocoa DIV略微半透明,以便窗口后面的桌面应用程序略微流血,但仅限于WebView,而不是DIV的其余部分?

或许我可以让整个WebView半透明,但除了一个WebView之外的所有DIV都要关闭它?

我有DIV加载网页。在网页中,我左侧有一个侧边栏,右侧有一个WebView。我点击侧边栏上的项目,然后更改右侧的IFRAME页面。我希望这个侧边栏略微半透明。

在我的IFRAME中,到目前为止,我已将此AppDelegate.mHTML标记设置为BODY,并且我的侧边栏设置为background:none但是我最终看到的只是一个灰色的侧边栏背景。就像webview本身想要确保它的背景设置为非透明颜色一样。

background:rgba(0,0,0,0.5)

2 个答案:

答案 0 :(得分:2)

相关分步教程示例:

http://stylekit.org/blog/2016/01/23/Chromeless-window/

设置半透明度:

  1. 将NSWindow子类的styleMask设置为NSFullSizeContentViewWindowMask(以便在标题栏区域中显示半透明效果,将其保留,标题栏区域将为空白)
  2. 设置self.titlebarAppearsTransparent = true(隐藏标题栏默认图片)
  3. 将下面的代码添加到您的NSWindow子类:(您现在应该有一个半透明的窗口)
  4. let visualEffectView = NSVisualEffectView(frame: NSMakeRect(0, 0, 0, 0))//<---the width and height is set to 0, as this doesn't matter. 
    visualEffectView.material = NSVisualEffectMaterial.AppearanceBased//Dark,MediumLight,PopOver,UltraDark,AppearanceBased,Titlebar,Menu
    visualEffectView.blendingMode = NSVisualEffectBlendingMode.BehindWindow//I think if you set this to WithinWindow you get the effect safari has in its TitleBar. It should have an Opaque background behind it or else it will not work well
    visualEffectView.state = NSVisualEffectState.Active//FollowsWindowActiveState,Inactive
    self.contentView = visualEffectView/*you can also add the visualEffectView to the contentview, just add some width and height to the visualEffectView, you also need to flip the view if you like to work from TopLeft, do this through subclassing*/
    

    enter image description here

    enter image description here

答案 1 :(得分:1)

是的,只需将WebView个实例的drawsBackground属性设置为NO,然后确保使用CSS填充您想要不透明的页面部分。