fix: sidebar avatar button color not update when toggle device appearance issue

This commit is contained in:
CMK 2021-11-04 15:21:12 +08:00
parent 0462ade3ae
commit 1cbc385253
3 changed files with 20 additions and 5 deletions

View File

@ -18,7 +18,7 @@ final class SidebarListContentView: UIView, UIContentView {
let avatarButton: CircleAvatarButton = {
let button = CircleAvatarButton()
button.borderWidth = 2
button.borderColor = UIColor.label.cgColor
button.borderColor = UIColor.label
return button
}()

View File

@ -38,6 +38,18 @@ class AvatarButton: UIControl {
avatarImageView.bottomAnchor.constraint(equalTo: bottomAnchor),
])
}
override func layoutSubviews() {
super.layoutSubviews()
updateAppearance()
}
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
updateAppearance()
}
func updateAppearance() {
avatarImageView.alpha = primaryActionState.contains(.highlighted) ? 0.6 : 1.0

View File

@ -9,15 +9,18 @@ import UIKit
final class CircleAvatarButton: AvatarButton {
var borderColor: CGColor = UIColor.systemFill.cgColor
@Published var needsHighlighted = false
var borderColor: UIColor = UIColor.systemFill
var borderWidth: CGFloat = 1.0
override func layoutSubviews() {
super.layoutSubviews()
override func updateAppearance() {
super.updateAppearance()
layer.masksToBounds = true
layer.cornerRadius = frame.width * 0.5
layer.borderColor = borderColor
layer.borderColor = borderColor.cgColor
layer.borderWidth = borderWidth
}
}