Fix weird cropping of avatars in dark theme on some devices

This commit is contained in:
Nora Trapp 2021-07-23 15:15:57 -07:00
parent e7074187ea
commit ee72ab2398
2 changed files with 12 additions and 11 deletions

View File

@ -41,6 +41,7 @@ class AvatarEditViewController: OWSTableViewController2 {
override func themeDidChange() {
super.themeDidChange()
optionViews.removeAll()
updateFooterViewLayout(forceUpdate: true)
}

View File

@ -73,6 +73,8 @@ class AvatarSettingsViewController: OWSTableViewController2 {
super.themeDidChange()
updateHeaderViewLayout(forceUpdate: true)
optionViews.removeAll()
updateTableContents()
}
@objc
@ -540,9 +542,9 @@ private protocol OptionViewDelegate: AnyObject {
}
private class OptionView: UIView {
private let imageView = UIImageView()
private let imageView = AvatarImageView()
private var imageViewInsetConstraints: [NSLayoutConstraint]?
private let editOverlayView = UIImageView()
private let editOverlayView = AvatarImageView()
private weak var delegate: OptionViewDelegate?
@ -558,15 +560,18 @@ private class OptionView: UIView {
super.init(frame: .zero)
imageView.contentMode = .center
addSubview(imageView)
imageView.autoPinEdgesToSuperviewEdges()
updateSelectionState()
editOverlayView.backgroundColor = .ows_blackAlpha20
editOverlayView.image = #imageLiteral(resourceName: "compose-solid-24").tintedImage(color: .ows_white)
editOverlayView.contentMode = .center
imageView.addSubview(editOverlayView)
editOverlayView.autoPinEdgesToSuperviewEdges()
editOverlayView.autoPinEdgesToSuperviewEdges(
withInsets: UIEdgeInsets(margin: 2.5)
)
editOverlayView.layer.borderWidth = 1.5
editOverlayView.isHidden = true
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(handleTap)))
@ -581,8 +586,7 @@ private class OptionView: UIView {
super.layoutSubviews()
layer.cornerRadius = width / 2
imageView.layer.cornerRadius = imageView.width / 2
imageView.clipsToBounds = true
layer.masksToBounds = true
}
@objc
@ -623,11 +627,6 @@ private class OptionView: UIView {
}
func updateSelectionState() {
imageViewInsetConstraints?.forEach { $0.isActive = false }
imageViewInsetConstraints = imageView.autoPinEdgesToSuperviewEdges(
withInsets: isSelected ? UIEdgeInsets(margin: 4) : .zero
)
if isSelected {
layer.borderColor = Theme.primaryTextColor.cgColor
layer.borderWidth = 2.5
@ -637,6 +636,7 @@ private class OptionView: UIView {
}
editOverlayView.isHidden = true
editOverlayView.layer.borderColor = OWSTableViewController2.cellBackgroundColor(isUsingPresentedStyle: true).cgColor
guard let model = model else { return }