Chrome 76 添加了对prefers-color-scheme媒体查询的支持(又名“暗模式”)。
但是,如何在不打开和关闭系统暗模式的情况下轻松地以两种配色方案测试我的网页?
这是Firefox的相同问题,但我在 Chrome 和 Chrome DevTools 中找不到类似的设置。
当我在暗模式下构建我的macOS应用程序时,我的一些文本视图(NSTextView)在几乎黑色的背景上呈现黑色文本.在Interface Builder中,在Attributes Inspector中,"Text Color"设置为系统"Default(Text Color)",我认为这是正确的.实际上,在Interface Builder中,根据需要,此文本在暗模式下呈现白色,在光模式下呈现黑色.我搜索了我的代码中的任何行,我可能会在此视图中将文本颜色设置为黑色,但找不到任何行.为什么我的文字总是黑的?
当我在Mojave下的Xcode 10中构建我的macOS应用程序时,它会自动使我的应用程序采用暗模式.我尚未准备好为我的应用程序实现黑暗模式.
如何禁用我的应用程序的暗模式,因此在macOS下的浅色和暗色模式下都显示为aqua?
清单和图标取决于浅色/深色模式,当用户更改操作系统中的模式时,有什么方法可以更改它们吗?
我已经触发了事件侦听器
window.matchMedia('(prefers-color-scheme: dark)').addEventListener( "change", (e) => {
if (e.matches) console.log('your in dark mode);
});
Run Code Online (Sandbox Code Playgroud)
但清单是从反应公共文件夹加载的..
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="Web site created using create-react-app"
/>
<link rel="apple-touch-icon" href="logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>My Site</title>
</head>
<body>
<noscript>Please enable JavaScript to run this app.</noscript>
<div id="root"></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
不确定如何处理也在公共文件夹根目录中的图标。此外,主题颜色的元标记也需要更改。
我在应用程序商店中有一个名为Range的相当直接的应用程序,我想让macOS 10.14符合黑暗模式.我注意到About窗口没有改变所有文本颜色.
我正在使用NSAboutPanelOptionCredits,我只需要捆绑Credits.rtf文件,该应用程序将处理其余文件.
https://developer.apple.com/documentation/appkit/nsaboutpaneloptioncredits?language=objc
问题是,当我改为黑暗模式时,文件中的文本保持黑色,而其他自动包含的文本变为白色(应用程序名称,版本等...)我打开了.rtf文件,有没有继承设置,或任何类型的东西.
知道我做错了什么,和/或错过了什么?
欣赏任何想法.谢谢!
Mojave (macOS 10.14) 很棒。
Xcode 10.0 (10A254a) 很棒。
黑暗模式很棒。
不是很好,除非我遗漏了什么,是 iOS 模拟器窗口的丑陋灰色背景(全屏时):
关于如何改变这种颜色的任何想法?
以前拖入 Xcode 资产目录的图像可以命名如下...
Rabbit@2x.png
Rabbit@3x.png
Run Code Online (Sandbox Code Playgroud)
释放拖动时,这些图像会自动分配到目录中正确的2x和3x插槽。
现在,借助 iOS 13 和 Xcode 11,我们能够添加一组备用图像以在深色模式下使用。有谁知道是否有一种方法可以指定亮/暗作为文件名的一部分,以便图像自动结束亮和暗槽。
IE
Rabbit@2x.png
Rabbit@3x.png
Rabbit@2x.dark.png
Rabbit@3x.dark.png
Run Code Online (Sandbox Code Playgroud) 在macOS 10.14 Mojave中,创建NSImage自动绘制浅色和深色版本的实例的唯一方法是通过资产目录和+[NSImage imageNamed:]。但是,我需要在运行时创建动态图像,并且似乎没有不使用私有API的方法。
在引擎盖下,似乎_appearanceName引入了私有财产,该私有财产以NSImageRep某种方式用于选择正确的表示形式。创建NSImage具有相应_appearanceName设置的图像表示形式应该很简单,但是我想避免这种情况。
我发现了一个简单的解决方法(在下面发布),但是当系统外观发生变化(即用户从浅色切换为深色或反之亦然)时,或者在将appearance属性设置为不同的视图层次结构中使用时,它似乎无法正常工作外观(例如,一个视图硬编码为暗模式,另一视图硬编码为亮模式)。
因此,如何NSImage像资产目录图像一样手动创建动态显示正确的明暗版本的动态图?
@implementation NSImage (CustomDynamic)
+ (NSImage *)imageWithLight:(NSImage *)light dark:(NSImage *)dark
{
if (@available(macOS 10.14, *)) {
return [NSImage
imageWithSize:light.size
flipped:NO
drawingHandler:^(NSRect dstRect) {
if ([NSImage appearanceIsDarkMode:NSAppearance.currentAppearance]) {
[dark drawInRect:dstRect];
} else {
[light drawInRect:dstRect];
}
return YES;
}
];
} else {
return light;
}
}
+ (BOOL)appearanceIsDarkMode:(NSAppearance *)appearance
{
if (@available(macOS 10.14, *)) {
NSAppearanceName basicAppearance = …Run Code Online (Sandbox Code Playgroud) 我在python Tkinter中的MacOS上对Dark Mode的支持存在问题。我在ActiveTlc 8.5上使用了python 3.6,并且Dark Mode正常工作,窗口标题栏很暗,对我来说很好...但是支持方面存在一些问题<MouseWheel>,然后我将 python 升级到3.7.1,而tlc的版本是更新到8.6。
但是现在黑暗模式不起作用了,这很奇怪,为什么会这样呢?
这是一个示例代码:
from tkinter import *
if __name__ == '__main__':
root = Tk()
hero_text = Label(root, fg='white', bg='black', text='HERO TEXT')
hero_text.grid(row=0, sticky=N+W)
print(root.tk.exprstring('$tcl_library'))
print(root.tk.exprstring('$tk_library'))
root.mainloop()
Run Code Online (Sandbox Code Playgroud) Windows和macOS现在具有暗模式。
对于CSS,我可以使用:
@media (prefers-dark-interface) {
color: white; background: black
}
Run Code Online (Sandbox Code Playgroud)
但是我正在使用Stripe ELements API,该API将颜色放入JavaScript
例如:
const stripeElementStyles = {
base: {
color: COLORS.darkGrey,
fontFamily: `-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"`,
fontSize: '18px',
fontSmoothing: 'antialiased',
'::placeholder': {
color: COLORS.midgrey
},
':-webkit-autofill': {
color: COLORS.icyWhite
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何在JavaScript中检测操作系统的首选配色方案?
macos-darkmode ×10
cocoa ×3
macos ×3
macos-mojave ×3
objective-c ×3
javascript ×2
appearance ×1
css ×1
favicon ×1
ios ×1
ios-darkmode ×1
nstextview ×1
python ×1
tk-toolkit ×1
tkinter ×1
xcode ×1
xcode10 ×1
xcode11 ×1