标签: ios-darkmode

UITabBar / UITabBarItem 和 iOS 13 的黑暗模式

在我们的应用程序中,我们以编程方式动态(见下文)使用自定义 UITabBarItem。我们使用 ImageAssets 来获得暗/亮正确的图像。但它不能 100% 工作:如果我们重新启动应用程序,那就没问题了。如果 iOS 切换到暗模式并且应用程序正在运行,图像将保持亮模式。想知道这是一个错误还是我现在可以设法让它工作......

UIImage *mImage = [UIImage imageNamed:@"tabBar1"];
UIImage *mImageSel = [UIImage imageNamed:@"tabBar1Sel"];

mImage = [mImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
mImageSel = [mImageSel imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

self.tabBarItem = [[UITabBarItem alloc] initWithTitle:nil image:mImage selectedImage:mImageSel];

UIEdgeInsets titleInsets = UIEdgeInsetsMake(-6, 0.0, -6.0, 0.0);
self.tabBarItem.imageInsets = titleInsets;
Run Code Online (Sandbox Code Playgroud)

没有显示错误信息...

uitabbaritem ios13 ios-darkmode

7
推荐指数
1
解决办法
2304
查看次数

在暗或亮模式下启动图像

有人知道如何为黑暗或明亮模式选择不同的启动图像集吗?

xcode ios ios13 ios-darkmode

7
推荐指数
1
解决办法
975
查看次数

当应用程序处于后台时,hasDifferentColorAppearance 为真

Apple 建议我们使用traitCollectionDidChangehasDifferentColorAppearance 来使用和比较特征集合,以捕捉何时切换暗模式,并在需要时对其进行操作。像这样:

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    super.traitCollectionDidChange(previousTraitCollection)
    if #available(iOS 13.0, *) {
        let hasUserInterfaceStyleChanged = previousTraitCollection?.hasDifferentColorAppearance(comparedTo: traitCollection) ?? false
        if (hasUserInterfaceStyleChanged) {
            //Update UI
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我用它来更新 UI,在暗模式和亮模式之间切换时清除一些缓存等。

出于某种原因traitCollectionDidChangehasDifferentColorAppearance每次我的应用程序处于后台时都会触发并评估为 true,无论我是否在设备上启用了暗模式。在这种情况下,previousTraitCollection 和当前 traitCollection 似乎从来没有匹配的 interfaceStyles。如果 userInterfaceStyle 实际上没有改变,我宁愿避免在 userInterfaceStyle 改变时进行更新。

这是一个错误,还是我只是错过了什么?

uitraitcollection ios13 ios-darkmode

7
推荐指数
1
解决办法
539
查看次数

如何防止iOS 13黑暗模式破坏电子邮件

我们有一个电子商务应用程序,可以在购物时发出订单详细信息,我们只是重新设计了该电子邮件模板。在过去几天中,我们收到了一些客户报告,其中电子邮件中的一半文本丢失。

最终获得屏幕截图后,我们了解到问题是在使用暗模式的iPhone上发生的。到目前为止,他们都是通过Mail应用程序或Safari使用gmail的客户(两者都有相同的问题)。我不确定gmail因素是否相关或偶然。

我们的电子邮件很简单-它具有白色背景,灰色标题和黑色正文。深色模式使白色背景和灰色标题保持不变,但是正文文本从黑色更改为白色。在白色背景上,白色文本显然是不可见的,并且电子邮件看起来缺少大量内容。

有什么措施可以防止黑暗模式将我们的文本从黑色变成白色?

我应该注意,我们的电子邮件中还嵌入了QR码,因此,我担心的解决方案将使深色模式继续为完整的电子邮件重新着色,因为我认为这将使QR码难以识别。

编辑:这与任何应用程序代码均不相关,因此不适用针对黑暗模式开发iOS的准则。这仅是iOS 13上处于黑暗模式下的Apple邮件应用如何显示HTML电子邮件的问题。

css email gmail ios ios-darkmode

7
推荐指数
2
解决办法
1159
查看次数

Xcode 11,暗/亮图像的资产目录命名约定?

以前拖入 Xcode 资产目录的图像可以命名如下...

Rabbit@2x.png
Rabbit@3x.png 
Run Code Online (Sandbox Code Playgroud)

释放拖动时,这些图像会自动分配到目录中正确的2x3x插槽。

现在,借助 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)

ios macos-darkmode xcode11 ios-darkmode

7
推荐指数
1
解决办法
1844
查看次数

如何在具有自定义颜色的 iOS 13 中支持暗模式启动屏幕?

我正在努力使我现有的 iOS 11+ 应用程序适应 iOS 13 中的新暗模式。使用动态/命名颜色在正常和暗外观之间切换没有任何问题,应用程序启动屏幕除外。

  • XIB在目标设置中选择一个简单的文件作为启动图像
  • 启动屏幕没有任何问题,只是背景颜色不适合正常/暗模式。
  • 启动屏幕使用动态/命名颜色作为背景颜色。假设为“深色外观”选择了绿色Any appearance红色。无论设备设置为使用正常模式还是暗模式,启动屏幕始终显示Any appearance颜色(绿色)。
  • 如果Any appearance颜色设置为其他值,例如黄色,启动屏幕将显示为该颜色==> 背景颜色设置正确
  • 在 Interface Builder 中切换界面样式显示正确的结果==> 背景颜色设置正确
  • 在应用程序的其他地方(例如在第一个视图控制器上)使用相同的动态颜色没有任何问题==> 颜色设置正确
  • 使用类似的动态颜色构建System Background Color没有任何问题(正常模式下的白色背景和暗模式下的黑色背景)
  • 改用动态背景图像(如其他一些线程中所提议的)具有完全相同的问题(仅显示正常的外观颜色)。

那么,如何让启动屏幕在暗模式下正常工作?

ios ios13 ios-darkmode

7
推荐指数
0
解决办法
784
查看次数

如何在React Native中强制禁用iOS暗模式

新的iOS 13更新引入了可选的系统范围。例如,这导致StatusBar的文本浅,在白色背景上可能变得不可读。它还会破坏iOS日期时间选择器(请参见DatePickerIOSreact-native-modal-datetime-picker

react-native ios13 ios-darkmode

7
推荐指数
1
解决办法
894
查看次数

如何在 iOS 13 的 Swift 中立即更改主题样式(用户界面样式)

我正在使用 Swift 5.1 和 Xcode 11.1,目前我已经完成了暗模式设计。

应用程序设置了用户可以设置显示主题(LightDarkSystem Default),目前如果应用程序在用户选择主题后重新启动,它可以正常工作(我将此 bool 数据保存在 UserDefaults 中,并在 AppDelegate 文件中的应用程序启动时设置 UIAppearance)

这是我的代码

if #available(iOS 13.0, *) {
   switch AppState.appThemeStyle {
   case "dark":
       window?.overrideUserInterfaceStyle = .dark
       break
   case "light":
       window?.overrideUserInterfaceStyle = .light
       break
   default:
       window?.overrideUserInterfaceStyle = .unspecified
   }
}
Run Code Online (Sandbox Code Playgroud)

但是我可以看到许多应用程序在用户设置主题样式后立即更改显示主题。

我认为仅更改主题而重新启动应用程序并不是一个好主意,并且在用户设置主题样式后应立即更改主题。

我试图通过在 ViewWillAppear 上设置基本视图控制器并设置用户界面样式来做到这一点,但导航栏和标签栏的外观没有改变。

谁能告诉我如何处理这个问题?谢谢。

ios swift ios-darkmode

7
推荐指数
1
解决办法
6423
查看次数

Xamarin.Forms:在 iOS 上启用暗模式时,禁用条目具有白色 TextColor

当启用暗模式时,我在 iOS 上的条目的 TextColor 似乎有一些问题。每当我将 Entry 的 Enabled 状态设置为 false 时,TextColor 就会变成白色并且无法更改。我使用以下简单的代码来重现这一点。

Page.xaml

    <Entry x:Name="TestEntry" />
Run Code Online (Sandbox Code Playgroud)
Page.xaml.cs

    public OnboardingPage()
    {
        InitializeComponent();

        TestEntry.Text = "Testo";
        TestEntry.TextColor = Color.Blue;
        TestEntry.IsEnabled = false;
    }
Run Code Online (Sandbox Code Playgroud)

我目前使用的是最新版本的 Xamarin.Forms。(4.4.0.991640)

有人知道这里出了什么问题吗?我不认为这是预期的行为..

提前致谢!

ios xamarin xamarin.forms xamarin.forms.entry ios-darkmode

7
推荐指数
1
解决办法
821
查看次数

更改 ASAuthorizationAppleIDButton 样式 深色/浅色模式已打开

我有一个登录苹果按钮。.black它在灯光模式下有风格:

let button = ASAuthorizationAppleIDButton(type: .signIn, style: .black)
Run Code Online (Sandbox Code Playgroud)

.white我希望它在深色模式下有风格

访问样式来更改它似乎不可能像这样:

button.style = .white
Run Code Online (Sandbox Code Playgroud)

有人知道这是否可以以干净的方式实现吗?无需重新创建按钮

traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
Run Code Online (Sandbox Code Playgroud)

检测到模式改变?

ios swift ios13 ios-darkmode

6
推荐指数
1
解决办法
1020
查看次数