标签: ios-darkmode

在SwiftUI中以编程方式检测暗模式以显示适当的图像

在中Assets.xcassets,可以添加其他图像,这些图像将根据外观自动切换。这对于静态图像效果很好,但是我试图弄清楚如何对下载的图像执行此操作。

影像集

有没有办法设置Imageinit 的暗模式版本,或者SwiftUI中是否有一个函数可以让您检测当前外观是否为暗,以便可以提供其他图像URL?

ios swift swiftui ios-darkmode

3
推荐指数
1
解决办法
812
查看次数

如何以编程方式检查ios设备的当前userInterfaceStyle?

我可以使用任何视图或ViewController的TraitCollection获取userInterfaceStyle。黑暗或光明。但是,当我强制应用程序使用暗或亮模式时,那么我想知道iOS设备与应用程序无关的当前userInterfaceStyle是什么?

我尝试了UIScreen的Traitcollection,但仍提供应用程序的userInterfaceStyle而不是设备。

ios swift ios13 ios-darkmode

3
推荐指数
1
解决办法
439
查看次数

如何在我的应用程序中禁用深色模式

我只想在我的应用程序中覆盖暗模式 UI。我补充的UIUserInterfaceStyleLight。但我不确定它不起作用。还有其他选择吗?

xcode ios ios13 xcode11 ios-darkmode

3
推荐指数
1
解决办法
5757
查看次数

如何访问 iOS13 之前的 UIImage 深色外观

我刚刚在我的应用程序中添加了黑暗模式。

资产目录支持每个资产的多种外观,在 iOS 13 上,这意味着当系统在深色或浅色模式下运行时,会使用正确的资产。

xcode 图像资源目录外观 这些不是我的真实资产

我正在尝试在较旧的 iOS 版本上支持深色模式。 在我尝试这样做的过程中,我添加了一个覆盖来强制黑暗模式,该模式适用于我的自定义颜色和主题,但不适用于图像。

在 iOS13 之前是否可以通过dark编程方式访问图像的外观?

对于 iOS12,我尝试使用以下方法:

if #available(iOS 12.0, *) {
    let traits = UITraitCollection(userInterfaceStyle: .dark)
    let image = UIImage(
        named: "Image", 
        in: bundle, 
        compatibleWith: traits
    )
}
Run Code Online (Sandbox Code Playgroud)

这只返回正常的外观,并且方法命名似乎表明这只检查我传递的特征集合是否与图像兼容。

xcode ios asset-catalog swift ios-darkmode

3
推荐指数
1
解决办法
2876
查看次数

如何在我的 iOS 应用程序中处理暗模式的黑色内容图像?

iOS dark mode在我的 iPad 应用程序中提供支持。当品牌徽标图像为黑色时,此问题仅适用于暗模式。一般来说,所有品牌标志都不是白色的,所以光模式没有问题。

以下是两种模式的屏幕截图:

浅色模式下的 Adura 品牌标志

在此处输入图片说明

深色模式下的 Adura 品牌标志

在此处输入图片说明

我怎样才能容纳这样的标志?我几乎没有建议将徽标后面的背景视图设置为灰色,但同样,某些品牌可能会出现灰色徽标。

uiview ios swift ios-darkmode uiuserinterfacestyle

3
推荐指数
2
解决办法
2602
查看次数

颜色为任意、深色,图像为任意、浅色、深色,为什么?

我正在将现有应用程序调整为暗模式。

某个视图使用图像来表示特征的状态。我已选择资产目录中的图像并将其Appearances字段从 none 修改为Any, Dark. 然后我添加了该Dark模式的图像,但没有。当我运行该应用程序时,设备处于开启模式时不会出现图像Light。这迫使我将该图像从 更改为Any, DarkAny, Light, Dark然后定义灯光模式的图像。

我在同一视图上有一个标签,我将该视图更改为Any, Dark只是为了检查它是否正常工作。

为什么一种视图有效而另一种无效?漏洞?

我应该将该标签更改为Any, Light, Dark吗?

ios ios13 ios-darkmode

3
推荐指数
1
解决办法
1033
查看次数

浅色和深色模式的 iOS 启动屏幕

我按照RSP-12931:iPAD Pro 上不支持本机分辨率中的说明为我的 Delphi 应用程序创建 iOS LaunchScreen。现在,对于 iOS 13,问题是我需要这个启动屏幕的 2 种变体,一种用于深色模式,另一种用于浅色模式。如何在 XCode 中创建一个基本启动屏幕,以在暗/亮模式下显示自定义背景颜色和徽标图像?

delphi xcode ios firemonkey ios-darkmode

3
推荐指数
1
解决办法
1254
查看次数

iOS黑暗模式。用户界面样式在进入后台时来回更改

我支持深色模式。在我的一些视图控制器中,我traitCollectionDidChange(_)用于处理用户界面样式更改。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        if #available(iOS 13.0, *) {
            if let p = previousTraitCollection {
                print("TRAIT COLLECTION \(p.userInterfaceStyle.desc) -> \(traitCollection.userInterfaceStyle.desc). \(UIApplication.shared.applicationState.desc); \(p.hasDifferentColorAppearance(comparedTo: traitCollection) ? "TRAIT CHANGED" : "TRAIT SAME")")
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我按下主页按钮并进入后台时,此方法会触发两次:

TRAIT COLLECTION DARK -> LIGHT. BACKGROUND; TRAIT CHANGED
TRAIT COLLECTION LIGHT -> DARK. BACKGROUND; TRAIT CHANGED
Run Code Online (Sandbox Code Playgroud)

当我在 iOS 设置中更改外观并返回前台时,我得到

TRAIT COLLECTION DARK -> LIGHT. INACTIVE; TRAIT CHANGED
Run Code Online (Sandbox Code Playgroud)

奇怪的。每次我进入后台时,我都会来回更改用户界面样式。为什么?

ios swift uitraitcollection ios-darkmode

3
推荐指数
1
解决办法
454
查看次数

UIUserInterfaceStyle 键在 Xcode 12 的 Info.plist 中不可用,如何从 Info.plist 禁用 Xcode 12 中的暗模式?

我试图通过在 Info.plist 文件中将 UIUserInterfaceStyle 键设置为 Light 来禁用暗模式支持,但现在它在 Xcode 12 的 Info.plist 中不可用。

在此处输入图片说明

是否仍然可以从 Info.plist 文件为 Xcode 12 中的 iOS 应用程序禁用暗模式支持。

ios swift ios-darkmode xcode12

3
推荐指数
1
解决办法
1414
查看次数

当系统外观更改时,SwiftUI ButtonStyle 动画会导致应用程序切换器快照中的 UI 不更新

在我的应用程序中,我有一个按钮,我想在触摸它时以动画方式缩小。为此,我创建了一个ButtonStyle具有显式animation. 这按预期工作,但在暗/亮模式系统外观之间切换时引入了问题。如果您在应用程序打开时更改它,Color则会按预期更新,但如果应用程序未打开,应用程序切换器中的快照将显示新系统外观的错误颜色。以下代码在浅色模式下应该是白色背景上的黑框,在深色模式下应该是黑底白字。背景始终会正确更新,但方框在快照中仍保持旧颜色,因此您无法看到它 - 黑底黑字或白底白字 - 至少从 iOS 14.2 开始是这样。问题是animation- 如果我删除快照,则会按预期显示。这是为什么?我该如何解决它?

struct ContentView: View {
    var body: some View {
        Button(action: {}) {
            Color.primary
                .frame(height: 100)
        }
        .buttonStyle(MyButtonStyle())
        .padding()
    }
}

struct MyButtonStyle: ButtonStyle {
    func makeBody(configuration: Self.Configuration) -> some View {
        configuration.label
            .scaleEffect(configuration.isPressed ? 0.8 : 1)
            .animation(.easeOut(duration: 0.5)) //FIXME: Removing this fixes it
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我在浅色模式下运行应用程序,然后关闭它,启用深色模式,然后打开应用程序切换器,发现该框在黑色背景上是黑色的。该框应该是白色的,就像我点击应用程序将其返回前台时一样。

截图

ios swift swiftui ios-darkmode swiftui-14.2-defect

3
推荐指数
1
解决办法
1266
查看次数