我有一个UIView,我shadowPath为它设置了一个这样的:
func addShadow() {
let cornerRadius: CGFloat = self.containerView.frame.height/2
self.containerView.layer.shadowPath = UIBezierPath(roundedRect: self.containerView.frame, cornerRadius: cornerRadius).cgPath
self.containerView.layer.shadowRadius = cornerRadius
self.containerView.layer.shadowOffset = .zero
self.containerView.layer.shadowOpacity = 0.2
self.containerView.layer.cornerRadius = cornerRadius
self.containerView.layer.shadowColor = UIColor(named: "whiteColor")?.cgColor
}
Run Code Online (Sandbox Code Playgroud)
这是whiteColor:
现在我的问题是
当我改变手机的外观时,
shadowPath的颜色不会自动改变。我应该怎么做才能使颜色动态?
我知道我可以从这个问题强制我的应用程序始终使用光照模式。但有人说苹果会拒绝该应用程序,有人说不会。那么如果我强制我的应用程序使用轻量模式,苹果会拒绝我的应用程序吗?
我目前正在尝试在应用程序中实现一个解决方案,用户应该能够使用以下选项实时切换应用程序的外观:
事实证明,使用 .preferredColorScheme() 设置浅色和深色配色方案非常容易且响应迅速;但是,对于“系统”选项,我还没有找到任何令人满意的解决方案。
我目前的方法如下:
我的想法是在 ContentView 中嵌入 MainView,这样@Environment(.colorScheme) 就不会被任何应用于 MainView 的 colorScheme 所干扰。
但是,它仍然没有按预期工作:设置明暗外观时,一切都按预期工作。但是,当从亮/暗切换到“系统”时,外观的变化只有在重新启动应用程序后才能看到。然而,预期的行为是外观立即改变。
对此有何想法?
以下是相关的代码片段:
主视图
import SwiftUI
struct MainView: View {
@AppStorage("selectedAppearance") var selectedAppearance = 0
var body: some View {
VStack {
Spacer()
Button(action: {
selectedAppearance = 1
}) {
Text("Light")
}
Spacer()
Button(action: {
selectedAppearance = 2
}) {
Text("Dark")
}
Spacer()
Button(action: {
selectedAppearance = 0
}) { …Run Code Online (Sandbox Code Playgroud) 我已经dark mode在我的 iOS 应用程序中实现了,虽然它可以工作,但更改不会立即发生。我认为这与views没有像他们在android.
例如,退出应用程序,然后进行设置并更改主题,然后再次返回应用程序是行不通的。直到那时,与 Apple 相关的框架(如alertControllers. 为了dark mode上班,我必须点击一个新的view,然后再回到旧的view。
我曾尝试dark mode在委托中添加代码,因为我认为每次您重新进入应用程序时都会运行它,但事实并非如此。
那么,关于如何使这项工作有任何想法?例如,每次我重新进入应用程序时是否都会运行一个委托,或者我可以让观察者进行dark mode更改吗?
我正在构建一个计算器并且正在添加暗模式支持,因此我将所有颜色更改为系统颜色,以便在 iOS 上为我的背景激活暗模式时它们会更改,例如我使用系统背景颜色为白色在黑暗模式下的黑色亮模式中..但是要显示文本,我需要完全相反,字体在暗模式下必须是白色,在亮模式下必须是黑色..因为我是在故事板中做的,所以我不能只是通过 component.color =... (, can I?) 将其设置为颜色,但我无法在选择器中找到 systemBlack 颜色...谢谢您的帮助!
我希望在 Xcode swift 应用程序的设置页面中有一个暗模式选项。是否可以仅在应用程序中的所有视图控制器上更改应用程序的暗模式?我选择了深色Assets.xcassets
我知道我可以使用overrideUserInterfaceStyle = .dark,但这只会改变一个 viewController。我希望它能够切换整个应用程序。
我使用此线程上的指南在我的应用程序中实现了暗/亮模式切换。示例代码如下:
public struct DarkModeViewModifier: ViewModifier {
@AppStorage("isDarkMode") var isDarkMode: Bool = true
public func body(content: Content) -> some View {
content
.environment(\.colorScheme, isDarkMode ? .dark : .light)
.preferredColorScheme(isDarkMode ? .dark : .light) // tint on status bar
}
}
Run Code Online (Sandbox Code Playgroud)
并称之为:
Picker("Color", selection: $isDarkMode) {
Text("Light").tag(false)
Text("Dark").tag(true)
}
.pickerStyle(SegmentedPickerStyle())
Run Code Online (Sandbox Code Playgroud)
如何通过添加一个System段来实现这一点?我想将 an 设置Int为默认设置,但我不知道如何将它与@AppStorage属性包装器联系起来。
以及如何在 SwiftUI 中观看系统模式更改生效?
我试图在启用深色模式时调整我的配色方案,但它似乎不起作用,不太确定我做错了什么。
我设置了一个颜色资源:
然后将其应用到我的表格视图单元格的背景:
但每当我切换黑暗模式时,结果总是只显示“浅色”外观 - 我尝试过切换应用程序设置页面,并在实际设备上进行了尝试。
有人可以建议我缺少什么吗?谢谢!
ios-darkmode ×8
ios ×5
swift ×5
swiftui ×2
xcode ×2
color-scheme ×1
shadowpath ×1
uistoryboard ×1
uiview ×1