Как сделать часть веб-вида слегка прозрачной?
В Objective-C
с Mac OSX
Cocoa
Есть ли способ сделать DIV
на WebView
слегка полупрозрачный, так что настольные приложения за окном слегка просвечивают, но только на этом DIV
а не остальная часть WebView
?
Или, возможно, я могу сделать весь WebView прозрачным, но отключить его для всех DIV
с исключением одного DIV
?
у меня есть WebView
загрузка веб-страницы. На веб-странице у меня есть боковая панель слева, а затем IFRAME
справа. Я нажимаю на элементы на боковой панели, и они меняют IFRAME
страницы справа. Именно эту боковую панель я хочу сделать слегка прозрачной.
В моем AppDelegate.m
У меня есть это до сих пор, и мой HTML
а также BODY
теги установлены в background:none
и моя боковая панель установлена на background:rgba(0,0,0,0.5)
, но все, что я вижу, это серый фон боковой панели. Это похоже на то, что само веб-представление хочет убедиться, что его фон установлен в цвет, отличный от прозрачного.
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// note that _window and _wv are outlet properties to my window and webview widgets
[_window setBackgroundColor:[NSColor clearColor]];
[_window setOpaque:NO];
[_wv.layer setBackgroundColor:[NSColor clearColor].CGColor];
[_wv.layer setOpaque:NO];
}
2 ответа
Да, просто установите drawsBackground
собственность вашего WebView
экземпляр для NO
, а затем убедитесь, что заполняете непрозрачные части страницы, используя CSS.
Связанное пошаговое руководство с примерами:
http://stylekit.org/blog/2016/01/23/Chromeless-window/
Настройка прозрачности:
- Установите styleMask вашего подкласса NSWindow в
NSFullSizeContentViewWindowMask
(чтобы полупрозрачность также была видна в области заголовка, оставьте это, и область заголовка будет пустой) - Установить
self.titlebarAppearsTransparent = true
(скрывает графику заголовка по умолчанию) - Добавьте приведенный ниже код в ваш подкласс NSWindow: (теперь у вас должно быть полупрозрачное окно)
,
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*/