gpt4 book ai didi

swift - iOS 14 上的 PKToolPicker 颜色选择器暗模式

转载 作者:行者123 更新时间:2023-12-04 13:30:16 31 4
gpt4 key购买 nike

我有一个带有连接到窗口共享 PKToolPicker 的 PKCanvasView 的 Controller 。
我可以强制 PKToolPicker 具有深色外观(图 1):

if let window = self.parent?.view.window, let toolPicker = PKToolPicker.shared(for: window) {
toolPicker.overrideUserInterfaceStyle = .dark
}
不幸的是,如果用户点击颜色选择器按钮,颜色选择器不会继承样式并且选择器显示为浅色样式(图 2)。
有谁知道如何在 iOS 14 上强制 PKToolPicker 的颜色选择器具有深色样式?
谢谢
enter image description here

最佳答案

不是一件容易的事。除了更改整个系统范围的附加功能的界面样式之外,还没有找到这样做的好方法。大多数情况下,我在创建界面时将其设置为我想要的模式,并在关闭时将其设置回原位。如果其他窥视者有更好的解决方案,我会全神贯注。
我的代码在 SwiftUI 中,因此您可能需要进行调整。我想要光模式在我身边,但那是等价的。

fileprivate static var currentWindowScene: UIWindowScene? {
UIApplication.shared.connectedScenes.first(where: { $0.activationState == .foregroundActive }) as? UIWindowScene
}

// Make sur the color picker is not inverted
if let windows = Self.currentWindowScene?.windows {
for window in windows {
if window.windowLevel != .normal && window.windowLevel != .alert && window.windowLevel != .statusBar {
if overriddenWindows[window] == nil {
DispatchQueue.main.async {
overriddenWindows[window] = window.overrideUserInterfaceStyle
}
}
window.overrideUserInterfaceStyle = .light
}
}
}
其他地方(在 toolPicker 第一次初始化时):
toolPicker.overrideUserInterfaceStyle = .light
当窗口关闭时:
.onDisappear {
if let windows = Self.currentWindowScene?.windows {
for window in windows {
if let overridden = overriddenWindows[window] {
window.overrideUserInterfaceStyle = overridden
}
}
overriddenWindows = .init()
}
}
绘制图像时:
var result: UIImage?
UITraitCollection(userInterfaceStyle: UIUserInterfaceStyle.light).performAsCurrent {
result = drawing.image(from: CGRect(x: 0, y: 0,
width:zoneSize.width,
height: zoneSize.height),
scale: UIScreen.main.scale)
}
return result

关于swift - iOS 14 上的 PKToolPicker 颜色选择器暗模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65482781/

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