chore: update setting appearance assets
This commit is contained in:
parent
e98e81ede1
commit
0c74880152
|
@ -7,12 +7,12 @@
|
|||
<key>AppShared.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>31</integer>
|
||||
<integer>35</integer>
|
||||
</dict>
|
||||
<key>CoreDataStack.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>30</integer>
|
||||
<integer>36</integer>
|
||||
</dict>
|
||||
<key>Mastodon - ASDK.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -37,7 +37,7 @@
|
|||
<key>MastodonIntent.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>29</integer>
|
||||
<integer>38</integer>
|
||||
</dict>
|
||||
<key>MastodonIntents.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
|
@ -52,12 +52,12 @@
|
|||
<key>NotificationService.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>3</integer>
|
||||
<integer>4</integer>
|
||||
</dict>
|
||||
<key>ShareActionExtension.xcscheme_^#shared#^_</key>
|
||||
<dict>
|
||||
<key>orderHint</key>
|
||||
<integer>28</integer>
|
||||
<integer>37</integer>
|
||||
</dict>
|
||||
</dict>
|
||||
<key>SuppressBuildableAutocreation</key>
|
||||
|
|
|
@ -111,9 +111,11 @@ internal enum Asset {
|
|||
}
|
||||
}
|
||||
internal enum Settings {
|
||||
internal static let appearanceAutomatic = ImageAsset(name: "Settings/appearance.automatic")
|
||||
internal static let appearanceDark = ImageAsset(name: "Settings/appearance.dark")
|
||||
internal static let appearanceLight = ImageAsset(name: "Settings/appearance.light")
|
||||
internal static let blackAuto = ImageAsset(name: "Settings/black.auto")
|
||||
internal static let black = ImageAsset(name: "Settings/black")
|
||||
internal static let darkAuto = ImageAsset(name: "Settings/dark.auto")
|
||||
internal static let dark = ImageAsset(name: "Settings/dark")
|
||||
internal static let light = ImageAsset(name: "Settings/light")
|
||||
}
|
||||
internal enum Theme {
|
||||
internal enum Mastodon {
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "iPhone 11 Pro _ X - 1.pdf",
|
||||
"filename" : "Mixed_Black_Light.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
BIN
Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png
vendored
Normal file
BIN
Mastodon/Resources/Assets.xcassets/Settings/black.auto.imageset/Mixed_Black_Light.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 379 KiB |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "iPhone 11 Pro _ X - 1 (1).pdf",
|
||||
"filename" : "Home Black.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
Binary file not shown.
After Width: | Height: | Size: 3.0 MiB |
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "iPhone 11 Pro _ X - 1 (2).pdf",
|
||||
"filename" : "Mixed_Dark_Light.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
BIN
Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png
vendored
Normal file
BIN
Mastodon/Resources/Assets.xcassets/Settings/dark.auto.imageset/Mixed_Dark_Light.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 375 KiB |
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "Home Dark.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 2.8 MiB |
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "Home Light.png",
|
||||
"idiom" : "universal"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 403 KiB |
|
@ -10,6 +10,9 @@ import UIKit
|
|||
class AppearanceView: UIView {
|
||||
lazy var imageView: UIImageView = {
|
||||
let view = UIImageView()
|
||||
view.layer.masksToBounds = true
|
||||
view.layer.cornerRadius = 14
|
||||
view.layer.cornerCurve = .continuous
|
||||
// accessibility
|
||||
view.accessibilityIgnoresInvertColors = true
|
||||
return view
|
||||
|
|
|
@ -16,25 +16,25 @@ class SettingsAppearanceTableViewCell: UITableViewCell {
|
|||
|
||||
var disposeBag = Set<AnyCancellable>()
|
||||
|
||||
static let spacing: CGFloat = 18
|
||||
|
||||
weak var delegate: SettingsAppearanceTableViewCellDelegate?
|
||||
var appearance: SettingsItem.AppearanceMode = .automatic
|
||||
|
||||
lazy var stackView: UIStackView = {
|
||||
let view = UIStackView()
|
||||
view.isLayoutMarginsRelativeArrangement = true
|
||||
view.layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 20)
|
||||
view.axis = .horizontal
|
||||
view.distribution = .fillEqually
|
||||
view.spacing = 18
|
||||
view.spacing = SettingsAppearanceTableViewCell.spacing
|
||||
view.translatesAutoresizingMaskIntoConstraints = false
|
||||
return view
|
||||
}()
|
||||
|
||||
let automatic = AppearanceView(image: Asset.Settings.appearanceAutomatic.image,
|
||||
let automatic = AppearanceView(image: Asset.Settings.darkAuto.image,
|
||||
title: L10n.Scene.Settings.Section.Appearance.automatic)
|
||||
let light = AppearanceView(image: Asset.Settings.appearanceLight.image,
|
||||
let light = AppearanceView(image: Asset.Settings.light.image,
|
||||
title: L10n.Scene.Settings.Section.Appearance.light)
|
||||
let dark = AppearanceView(image: Asset.Settings.appearanceDark.image,
|
||||
let dark = AppearanceView(image: Asset.Settings.dark.image,
|
||||
title: L10n.Scene.Settings.Section.Appearance.dark)
|
||||
|
||||
lazy var automaticTap: UITapGestureRecognizer = {
|
||||
|
@ -80,6 +80,8 @@ class SettingsAppearanceTableViewCell: UITableViewCell {
|
|||
subview.removeFromSuperview()
|
||||
}
|
||||
}
|
||||
|
||||
setupAsset(theme: ThemeService.shared.currentTheme.value)
|
||||
}
|
||||
|
||||
func update(with data: SettingsItem.AppearanceMode) {
|
||||
|
@ -115,10 +117,36 @@ class SettingsAppearanceTableViewCell: UITableViewCell {
|
|||
|
||||
NSLayoutConstraint.activate([
|
||||
stackView.topAnchor.constraint(equalTo: contentView.topAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
|
||||
stackView.leadingAnchor.constraint(equalTo: contentView.readableContentGuide.leadingAnchor),
|
||||
stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
|
||||
stackView.trailingAnchor.constraint(equalTo: contentView.readableContentGuide.trailingAnchor),
|
||||
])
|
||||
|
||||
setupAsset(theme: ThemeService.shared.currentTheme.value)
|
||||
ThemeService.shared.currentTheme
|
||||
.receive(on: DispatchQueue.main)
|
||||
.sink { [weak self] theme in
|
||||
guard let self = self else { return }
|
||||
self.setupAsset(theme: theme)
|
||||
}
|
||||
.store(in: &disposeBag)
|
||||
}
|
||||
|
||||
private func setupAsset(theme: Theme) {
|
||||
let aspectRatio = Asset.Settings.light.image.size
|
||||
let width = floor(frame.width - 2 * SettingsAppearanceTableViewCell.spacing) / 3
|
||||
let height = width / aspectRatio.width * aspectRatio.height
|
||||
let size = CGSize(width: width, height: height)
|
||||
|
||||
light.imageView.image = Asset.Settings.light.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale)
|
||||
switch theme.themeName {
|
||||
case .mastodon:
|
||||
automatic.imageView.image = Asset.Settings.darkAuto.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale)
|
||||
dark.imageView.image = Asset.Settings.dark.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale)
|
||||
case .system:
|
||||
automatic.imageView.image = Asset.Settings.blackAuto.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale)
|
||||
dark.imageView.image = Asset.Settings.black.image.af.imageAspectScaled(toFill: size, scale: UIScreen.main.scale)
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Actions
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
import UIKit
|
||||
|
||||
struct MastodonTheme: Theme {
|
||||
|
||||
let themeName: ThemeName = .mastodon
|
||||
|
||||
let systemBackgroundColor = Asset.Theme.Mastodon.systemBackground.color
|
||||
let secondarySystemBackgroundColor = Asset.Theme.Mastodon.secondarySystemBackground.color
|
||||
let tertiarySystemBackgroundColor = Asset.Theme.Mastodon.tertiarySystemBackground.color
|
||||
|
|
|
@ -8,6 +8,9 @@
|
|||
import UIKit
|
||||
|
||||
struct SystemTheme: Theme {
|
||||
|
||||
let themeName: ThemeName = .system
|
||||
|
||||
let systemBackgroundColor = Asset.Theme.System.systemBackground.color
|
||||
let secondarySystemBackgroundColor = Asset.Theme.System.secondarySystemBackground.color
|
||||
let tertiarySystemBackgroundColor = Asset.Theme.System.tertiarySystemBackground.color
|
||||
|
|
|
@ -9,6 +9,8 @@ import UIKit
|
|||
|
||||
public protocol Theme {
|
||||
|
||||
var themeName: ThemeName { get }
|
||||
|
||||
var systemBackgroundColor: UIColor { get }
|
||||
var secondarySystemBackgroundColor: UIColor { get }
|
||||
var tertiarySystemBackgroundColor: UIColor { get }
|
||||
|
|
Loading…
Reference in New Issue