我有自定义 UITableView,我将背景颜色设置为白色。这适用于黑暗和明亮模式。但在黑暗模式下,披露指标很难看到。
我试图用 cell.tint 颜色解决这个问题,但它不起作用。我该如何解决?
黑暗模式:
明亮模式:
我有一个集合视图,显示应用程序中的时间段。在黑暗模式下,UILabel 似乎没有在白色背景上显示黑色文本颜色。
在故事板中,我已将标签的颜色设置为黑色(也尝试了默认颜色)。
在代码中,当用户选择单元格时,
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
cell.timeLabel.toggleTheme(true)
}
}
Run Code Online (Sandbox Code Playgroud)
我有 UILabel 扩展:
extension UILabel{
func toggleTheme(_ selected : Bool){
if selected{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}else{
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
} else {
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
}else{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = …Run Code Online (Sandbox Code Playgroud) 我使用图像,这个图像有两个版本的 light 和 dark UIUserInterfaceStyle,但是UIViewController当暗模式打开时,我需要在一个版本中使用图像 light 版本。我知道我可以使用tintColor,但我想知道是否有其他方法可以做到这一点。
如何将地图从iOS 13更改为暗模式?
我已从 UserInterfaceStyle 中选择退出,因此系统范围的颜色不适用于我,所以我将手动进行。
我在8:19看过苹果WWDC2019 - Session 236 的这段视频,但那是快照,我没看懂。
实际上我正在尝试类似的事情:
private var mapView: MKMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.backgroundColor = .black
}
Run Code Online (Sandbox Code Playgroud)
但它不会将主题或外观或 traitCollection 更改为深色。
有什么建议吗?
我正在使用 Swift 5.1 和 Xcode 11.1,目前我已经完成了暗模式设计。
用户使用此代码更改设置页面中的主题样式后,主题会立即更新。
guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else {
return
}
appDelegate.changeTheme(themeVal)
// App Delegate File
...
func changeTheme(themeVal: String) {
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)
但问题是我看不到状态栏文本,因为状态栏文本颜色和视图颜色相同。
有人可以建议我好的解决方案吗?谢谢。
我正在检查我现有的应用程序是否与 ios 13 新引入的暗模式功能一起正常工作。
一切似乎都正常,只有我的一个 tableViews 中的单元格背景没有根据模式(暗/亮)刷新。
如果应用程序以深色模式启动,单元格也会显示正确的深色背景。如果应用程序在后台时模式发生变化,则单元格背景颜色不会更改。单元格标签切换颜色正确。
对于 tableview 单元格,我使用以下函数进行渐变:
func gradient(frame:CGRect) -> CAGradientLayer {
let gradColor1 = UIColor(named: "gradientBright")!
let gradColor2 = UIColor(named: "gradientDark")!
let layer = CAGradientLayer()
layer.frame = frame
layer.startPoint = CGPoint(x: 0.5, y: 0)
layer.endPoint = CGPoint(x: 0.5, y: 1)
layer.colors = [
gradColor1.cgColor,
gradColor2.cgColor
]
layer.shadowOpacity = 0.7
layer.shadowRadius = 10.0
return layer
}
Run Code Online (Sandbox Code Playgroud)
我将渐变背景添加到表格单元格中
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
Run Code Online (Sandbox Code Playgroud)
使用以下代码
cell.layer.insertSublayer(gradient(frame: cell.bounds), at: 0)
Run Code Online (Sandbox Code Playgroud)
任何想法,为什么在应用程序处于活动状态或在后台时发生模式更改后,只有渐变功能似乎无法获得正确的颜色?
问候
这是我目前UI Element Colors在深色模式下处理旧版本操作系统的方式。
extension UIColor {
class var mySystemBackground: UIColor {
if #available(iOS 13, *) {
return .systemBackground
} else {
return .white
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可以systemBackground知道它何时处于暗模式下以及何时处于亮模式下,并相应地进行了更改。我想使用自定义颜色做类似的事情。
例如,我有一个自定义的黄色,当前正在整个应用程序中使用,我想为处于深色模式的用户提供不同的颜色。
这是我在想的代码...
extension UIColor{
class var mySystemYellowColor: UIColor {
// default light-color
var myYellow = UIColor(red: 254/255, green: 219/255, blue: 2/255, alpha: 1.0) /* #fedb02 */
if #available(iOS 13.0, *) {
if traitCollection.userInterfaceStyle == .light {
return myYellow
} else {
// color for dark mode in iOS 13.0 …Run Code Online (Sandbox Code Playgroud) 我的应用程序具有default用于登录前屏幕的状态栏样式。- 登录后,应用程序lightContent在整个应用程序中使用状态栏样式。
一切正常,直到 iOS 12。它开始在 iOS 13 上产生问题(仅当启用暗模式时)。
以下是我已经尝试过的事情,但仍然无法正常工作。
UIUserInterfaceStyle为Light UIViewControllerBasedStatusBarAppearance为YES override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }
viewDidLoad()类文件中添加了这一行。 setNeedsStatusBarAppearanceUpdate()
但是,我仍然没有摆脱与状态栏相关的东西。我只需要我的状态栏在登录前在屏幕上变暗,一旦用户登录,它应该亮起。
整个应用程序应具有相同的深色和浅色模式 UI。(因为它适用于 iOS 13 以下的操作系统)现在工作正常,但只有状态栏在改变颜色。
注意:禁用暗模式后一切正常。这仅在启用暗模式时才会产生问题。
根据我的理解,我在 Xcode 中创建了一个新项目,并添加了 3 个具有不同状态栏外观的屏幕。
A 工作案例
VC1 -Default风格
VC2 -Default风格
VC3 -LightContent风格
一个工作情况
VC1 -LightContent风格
VC2 -LightContent风格
VC3 -Default风格
不工作(失败)情况
VC1 -Default …
我正在尝试在我的 flutter 应用程序中实现黑暗模式,但我不知道我错过了什么,但它在 iOS 上不起作用。我设法在 Android 上运行得很好,但当我打印时,WidgetsBinding.instance.window.platformBrightness仍然有光,当黑暗模式打开时。
当我设置 themeMode: ThemeMode.dark - 深色模式正常工作时,问题出在自动检测上。
另外,当我运行新的空白项目时,深色模式工作正常。但在我构建的应用程序中,它不起作用。即使themeMode设置为ThemeMode.system:
themeMode: ThemeMode.system,
theme: ThemeData(
accentColor: darkBlue,
cursorColor: red,
primaryColor: Colors.white,
brightness: Brightness.light,
),
darkTheme: ThemeData(
accentColor: Colors.white,
cursorColor: red,
primaryColor: Colors.white,
brightness: Brightness.dark,
),
Run Code Online (Sandbox Code Playgroud)
您有什么想法吗?可能出了什么问题,或者您有什么建议吗?
Flutter 版本:1.12.13-hotfix.9和 iOS 版本:iPhone SE 模拟器 - iOS 13.3
多谢。
我为深色和浅色模式创建了图像资源,名为 myImage。将图像资源外观设置为任意、深色。
问题是,即使模式是浅色或深色,此代码也会得到相同的图像。
如何获取代码以根据浅色或深色模式选择正确的图像?
感谢您的帮助。
let image = UIImage(named: "image")
let asset = image?.imageAsset
let resolvedImage = asset?.image(with: traitCollection)
If let image = resolvedImage {
myButton.setImage(image, for: .normal)
}
Run Code Online (Sandbox Code Playgroud)