
昨日アナウンスした「SurfTideΔ for iOS v1.2.3」がAppStoreで公開されました。
いまのところダークモード切替の問題はおきていません。
v1.2.1 and 1.2.2 では、すこし違った実装をしていたのですが、セオリー通りにシンプルに「traitCollectionDidChange」にてアピアラインスの変更をフックするようにしました。
ちなみに、この手法でTodayExtensionでイメージをダイレクトに作画している場合も機能するようです。なので、通知エリアでタイドグラフを表示中にアピアランスを切り替えても正しく機能しています。
こんな実装ですね
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
if #available(iOS 13.0, *) {
let hasChanged = previousTraitCollection?.hasDifferentColorAppearance(comparedTo: traitCollection) ?? false
if (hasChanged) {
// ここで必要なlayerを更新する
hogehogeLayer.setNeedsDisplay()
}
}
}
Comments