相关疑难解决方法(0)

如何检测 iOS 13 中的 Light\Dark 模式变化?

某些 UI 设置无法在暗/亮模式下自动工作,因为UIColor. 例如shadow在图层中。因为我需要在明暗模式下删除和放置阴影,所以我需要在某个地方放置updateShadowIfNeeded()函数。我知道如何检测当前的模式:

func dropShadowIfNeeded() {
    switch traitCollection.userInterfaceStyle {
    case .dark: removeShadow()
    case .light: dropShadowIfNotDroppedYet()
    default: assertionFailure("Unknown userInterfaceStyle")
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我把这个函数放在 里面layoutSubviews,因为每次外观改变时它都会被调用:

override func layoutSubviews() {
    super.layoutSubviews()
    dropShadowIfNeeded()
}
Run Code Online (Sandbox Code Playgroud)

但是这个函数被调用了很多。只有在userInterfaceStyle更改时才触发的正确功能是什么?

uikit uitraitcollection swiftui ios-darkmode

8
推荐指数
1
解决办法
7151
查看次数

如何使用Swift 3检测macOS默认模式和黑暗模式之间的切换

我想在用户从默认模式切换到黑暗模式时更改状态栏应用程序图标,反之亦然(使用Swift 3).这是我到目前为止所拥有的:

func applicationDidFinishLaunching(_ aNotification: Notification) {
    DistributedNotificationCenter.default().addObserver(self, selector: #selector(darkModeChanged(sender:)), name: "AppleInterfaceThemeChangedNotification", object: nil)
}

...

func darkModeChanged(sender: NSNotification) {
    print("mode changed")
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,它没有用.我究竟做错了什么?

observers selector nsnotificationcenter swift nsdistributednotification

6
推荐指数
1
解决办法
1927
查看次数

检测 iOS 暗模式中的变化

我在这里发现了一些与我遇到的问题相关的问题,但由于我对 iOS 开发还很陌生,我不确定人们如何/在哪里实施他们的解决方案。由于我也是 StackOverflow 的新手,我无法对他们的帖子发表评论,因此我们将不胜感激。

检测 iOS 暗模式更改

如何检测 iOS 13 中的 Light\Dark 模式变化?

我有一个 collectionView,当我切换到暗模式和从暗模式切换时,单元格的边框颜色正在更改为黑色,而不是它应该基于我分配给它的 systemGray 颜色的颜色。

在我上面链接的答案中,人们建议使用 layoutSubviews() 和/或 traitCollectionDidChange() 但我不确定在哪里实现这些功能。我似乎无法在 UIViewController 或 UICollectionView 的定义中找到这些函数。

当我使用 reloadData() 重新加载视图时,颜色会更改为它们应有的颜色,但我想知道何时/何处调用 layoutSubviews() 和/或 traitCollectionDidChange() 函数。

swift ios13 ios-darkmode

2
推荐指数
1
解决办法
2948
查看次数