fix: hashtag icon in search history record cell can not adaptive update appearance issue
This commit is contained in:
parent
eaff363243
commit
829c3f4cd2
|
@ -32,24 +32,8 @@ extension SearchHistorySection {
|
|||
}
|
||||
return cell
|
||||
case .status:
|
||||
// Should not show status in the history list
|
||||
return UITableViewCell()
|
||||
// let cell = tableView.dequeueReusableCell(withIdentifier: String(describing: StatusTableViewCell.self), for: indexPath) as! StatusTableViewCell
|
||||
// if let status = try? dependency.context.managedObjectContext.existingObject(with: statusObjectID) as? Status {
|
||||
// let activeMastodonAuthenticationBox = dependency.context.authenticationService.activeMastodonAuthenticationBox.value
|
||||
// let requestUserID = activeMastodonAuthenticationBox?.userID ?? ""
|
||||
// StatusSection.configure(
|
||||
// cell: cell,
|
||||
// tableView: tableView,
|
||||
// timelineContext: .search,
|
||||
// dependency: dependency,
|
||||
// readableLayoutFrame: tableView.readableContentGuide.layoutFrame,
|
||||
// status: status,
|
||||
// requestUserID: requestUserID,
|
||||
// statusItemAttribute: attribute
|
||||
// )
|
||||
// }
|
||||
// cell.delegate = statusTableViewCellDelegate
|
||||
// return cell
|
||||
} // end switch
|
||||
} // end UITableViewDiffableDataSource
|
||||
} // end func
|
||||
|
|
|
@ -16,7 +16,7 @@ import MastodonMeta
|
|||
|
||||
final class SearchResultTableViewCell: UITableViewCell {
|
||||
|
||||
let _imageView: AvatarImageView = {
|
||||
let avatarImageView: AvatarImageView = {
|
||||
let imageView = AvatarImageView()
|
||||
imageView.tintColor = Asset.Colors.Label.primary.color
|
||||
imageView.layer.cornerRadius = 4
|
||||
|
@ -24,6 +24,13 @@ final class SearchResultTableViewCell: UITableViewCell {
|
|||
return imageView
|
||||
}()
|
||||
|
||||
let hashtagImageView: UIImageView = {
|
||||
let imageView = UIImageView()
|
||||
imageView.image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate)
|
||||
imageView.tintColor = Asset.Colors.Label.primary.color
|
||||
return imageView
|
||||
}()
|
||||
|
||||
let _titleLabel = MetaLabel(style: .statusName)
|
||||
|
||||
let _subTitleLabel: UILabel = {
|
||||
|
@ -43,7 +50,8 @@ final class SearchResultTableViewCell: UITableViewCell {
|
|||
|
||||
override func prepareForReuse() {
|
||||
super.prepareForReuse()
|
||||
_imageView.af.cancelImageRequest()
|
||||
avatarImageView.af.cancelImageRequest()
|
||||
setDisplayAvatarImage()
|
||||
}
|
||||
|
||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||
|
@ -74,11 +82,20 @@ extension SearchResultTableViewCell {
|
|||
containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor)
|
||||
])
|
||||
|
||||
_imageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
containerStackView.addArrangedSubview(_imageView)
|
||||
avatarImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
containerStackView.addArrangedSubview(avatarImageView)
|
||||
NSLayoutConstraint.activate([
|
||||
_imageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
_imageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
avatarImageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
avatarImageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
])
|
||||
|
||||
hashtagImageView.translatesAutoresizingMaskIntoConstraints = false
|
||||
containerStackView.addSubview(hashtagImageView)
|
||||
NSLayoutConstraint.activate([
|
||||
hashtagImageView.centerXAnchor.constraint(equalTo: avatarImageView.centerXAnchor),
|
||||
hashtagImageView.centerYAnchor.constraint(equalTo: avatarImageView.centerYAnchor),
|
||||
hashtagImageView.widthAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
hashtagImageView.heightAnchor.constraint(equalToConstant: 42).priority(.required - 1),
|
||||
])
|
||||
|
||||
let textStackView = UIStackView()
|
||||
|
@ -107,7 +124,9 @@ extension SearchResultTableViewCell {
|
|||
|
||||
_titleLabel.isUserInteractionEnabled = false
|
||||
_subTitleLabel.isUserInteractionEnabled = false
|
||||
_imageView.isUserInteractionEnabled = false
|
||||
avatarImageView.isUserInteractionEnabled = false
|
||||
|
||||
setDisplayAvatarImage()
|
||||
}
|
||||
|
||||
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
|
||||
|
@ -182,8 +201,7 @@ extension SearchResultTableViewCell {
|
|||
|
||||
func config(with tag: Mastodon.Entity.Tag) {
|
||||
configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: nil))
|
||||
let image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate)
|
||||
_imageView.image = image
|
||||
setDisplayHashtagImage()
|
||||
let metaContent = PlaintextMetaContent(string: "#" + tag.name)
|
||||
_titleLabel.configure(content: metaContent)
|
||||
guard let histories = tag.history else {
|
||||
|
@ -198,8 +216,7 @@ extension SearchResultTableViewCell {
|
|||
|
||||
func config(with tag: Tag) {
|
||||
configure(with: AvatarConfigurableViewConfiguration(avatarImageURL: nil))
|
||||
let image = UIImage(systemName: "number.circle.fill", withConfiguration: UIImage.SymbolConfiguration(pointSize: 34, weight: .regular))!.withRenderingMode(.alwaysTemplate)
|
||||
_imageView.image = image
|
||||
setDisplayHashtagImage()
|
||||
let metaContent = PlaintextMetaContent(string: "#" + tag.name)
|
||||
_titleLabel.configure(content: metaContent)
|
||||
guard let histories = tag.histories?.sorted(by: {
|
||||
|
@ -215,11 +232,23 @@ extension SearchResultTableViewCell {
|
|||
}
|
||||
}
|
||||
|
||||
extension SearchResultTableViewCell {
|
||||
func setDisplayAvatarImage() {
|
||||
avatarImageView.alpha = 1
|
||||
hashtagImageView.alpha = 0
|
||||
}
|
||||
|
||||
func setDisplayHashtagImage() {
|
||||
avatarImageView.alpha = 0
|
||||
hashtagImageView.alpha = 1
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - AvatarStackedImageView
|
||||
extension SearchResultTableViewCell: AvatarConfigurableView {
|
||||
static var configurableAvatarImageSize: CGSize { CGSize(width: 42, height: 42) }
|
||||
static var configurableAvatarImageCornerRadius: CGFloat { 4 }
|
||||
var configurableAvatarImageView: FLAnimatedImageView? { _imageView }
|
||||
var configurableAvatarImageView: FLAnimatedImageView? { avatarImageView }
|
||||
}
|
||||
|
||||
#if canImport(SwiftUI) && DEBUG
|
||||
|
@ -231,7 +260,7 @@ struct SearchResultTableViewCell_Previews: PreviewProvider {
|
|||
UIViewPreview {
|
||||
let cell = SearchResultTableViewCell()
|
||||
cell.backgroundColor = .white
|
||||
cell._imageView.image = UIImage(systemName: "number.circle.fill")
|
||||
cell.setDisplayHashtagImage()
|
||||
cell._titleLabel.text = "Electronic Frontier Foundation"
|
||||
cell._subTitleLabel.text = "@eff@mastodon.social"
|
||||
return cell
|
||||
|
|
Loading…
Reference in New Issue