gpt4 book ai didi

ios - 有没有办法覆盖 iOS 13 上下文菜单的(深色/浅色)用户界面样式?

转载 作者:行者123 更新时间:2023-11-28 23:25:08 28 4
gpt4 key购买 nike

我的应用支持 iOS 13 深色模式,并为用户提供了匹配系统外观或强制应用始终使用深色模式或浅色模式的选项,无论系统设置如何。

该应用还允许在用户按下 UILabel 时显示上下文菜单。但是,当使用 UIContextMenuInteractionDelegate 方法呈现上下文菜单时,我找不到任何方法来覆盖菜单的深色/浅色外观,也找不到在上下文菜单出现和消失。

例如,如果 iOS 外观设置为浅色模式,并且用户在应用中选择了强制深色模式的选项,则上下文菜单会显示为浅色。我想覆盖该行为,使它们看起来很暗 - 有什么办法可以实现这一目标吗?似乎没有与我能找到的上下文菜单关联的 overrideUserInterfaceStyle 属性。

我使用的代码如下,供引用。

// Setup code

if #available(iOS 13.0, *) {
self.textLabel.addInteraction(UIContextMenuInteraction(delegate: self))
}

// UIContextMenuInteractionDelegate

@available(iOS 13.0, *)
func contextMenuInteraction(_ interaction: UIContextMenuInteraction, configurationForMenuAtLocation location: CGPoint) -> UIContextMenuConfiguration? {
let text = self.text
return UIContextMenuConfiguration(identifier: nil, previewProvider: { return TextViewController(text: text) }) { [weak self] _ in
return self?.contextMenu(for: text)
}
}

@available(iOS 13.0, *)
private func contextMenu(for text: String) -> UIMenu {
let copy = UIAction(title: "Copy", image: UIImage(systemName: "doc.on.doc")) { _ in
// Perform 'text' copy
}

let share = UIAction(title: "Share", image: UIImage(systemName: "square.and.arrow.up")) { _ in
// Present system share sheet
}

return UIMenu(title: "", children: [copy, share])
}

我使用以下方法强制呈现上下文菜单的 View Controller 的外观:

overrideUserInterfaceStyle = .dark // or .light

所以,我面临的问题不是我的 UIViewController 中的 UI 元素,而是它显示的上下文菜单。

最佳答案

为整个应用程序或场景覆盖浅色或深色模式:

在 iOS 13 及更高版本中,将以下行添加到 AppDelegateSceneDelegate

self.window?.overrideUserInterfaceStyle = .light / .dark

为特定的 UIViewController 覆盖浅色或深色模式:

ViewDidLoad 中添加如下代码:

self.overrideUserInterfaceStyle = .light / .dark

为特定的 UIView 覆盖浅色或深色模式:

view.overrideUserInterfaceStyle = .light / .dark

关于ios - 有没有办法覆盖 iOS 13 上下文菜单的(深色/浅色)用户界面样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58919717/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com