在我们的应用程序中,我们以编程方式动态(见下文)使用自定义 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)
没有显示错误信息...
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,在暗模式和亮模式之间切换时清除一些缓存等。
出于某种原因traitCollectionDidChange,hasDifferentColorAppearance每次我的应用程序处于后台时都会触发并评估为 true,无论我是否在设备上启用了暗模式。在这种情况下,previousTraitCollection 和当前 traitCollection 似乎从来没有匹配的 interfaceStyles。如果 userInterfaceStyle 实际上没有改变,我宁愿避免在 userInterfaceStyle 改变时进行更新。
这是一个错误,还是我只是错过了什么?
我们有一个电子商务应用程序,可以在购物时发出订单详细信息,我们只是重新设计了该电子邮件模板。在过去几天中,我们收到了一些客户报告,其中电子邮件中的一半文本丢失。
最终获得屏幕截图后,我们了解到问题是在使用暗模式的iPhone上发生的。到目前为止,他们都是通过Mail应用程序或Safari使用gmail的客户(两者都有相同的问题)。我不确定gmail因素是否相关或偶然。
我们的电子邮件很简单-它具有白色背景,灰色标题和黑色正文。深色模式使白色背景和灰色标题保持不变,但是正文文本从黑色更改为白色。在白色背景上,白色文本显然是不可见的,并且电子邮件看起来缺少大量内容。
有什么措施可以防止黑暗模式将我们的文本从黑色变成白色?
我应该注意,我们的电子邮件中还嵌入了QR码,因此,我担心的解决方案将使深色模式继续为完整的电子邮件重新着色,因为我认为这将使QR码难以识别。
编辑:这与任何应用程序代码均不相关,因此不适用针对黑暗模式开发iOS的准则。这仅是iOS 13上处于黑暗模式下的Apple邮件应用如何显示HTML电子邮件的问题。
以前拖入 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) 我正在努力使我现有的 iOS 11+ 应用程序适应 iOS 13 中的新暗模式。使用动态/命名颜色在正常和暗外观之间切换没有任何问题,应用程序启动屏幕除外。
XIB在目标设置中选择一个简单的文件作为启动图像Any appearance和红色。无论设备设置为使用正常模式还是暗模式,启动屏幕始终显示Any appearance颜色(绿色)。Any appearance颜色设置为其他值,例如黄色,启动屏幕将显示为该颜色==> 背景颜色设置正确 System Background Color没有任何问题(正常模式下的白色背景和暗模式下的黑色背景)那么,如何让启动屏幕在暗模式下正常工作?
新的iOS 13更新引入了可选的系统范围。例如,这导致StatusBar的文本浅,在白色背景上可能变得不可读。它还会破坏iOS日期时间选择器(请参见DatePickerIOS 或react-native-modal-datetime-picker)
我正在使用 Swift 5.1 和 Xcode 11.1,目前我已经完成了暗模式设计。
应用程序设置了用户可以设置显示主题(Light,Dark,System 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 上的条目的 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)
有人知道这里出了什么问题吗?我不认为这是预期的行为..
提前致谢!
我有一个登录苹果按钮。.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-darkmode ×10
ios ×7
ios13 ×6
swift ×2
css ×1
email ×1
gmail ×1
react-native ×1
uitabbaritem ×1
xamarin ×1
xcode ×1
xcode11 ×1