优化图片未加载时导致的布局问题

This commit is contained in:
Fin 2025-05-27 10:43:05 +08:00
parent fb252f20c9
commit c1d9dfe7f6

View File

@ -40,7 +40,7 @@ class MessageItemView: UIView {
let imageView: UIImageView = { let imageView: UIImageView = {
let imageView = UIImageView() let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill imageView.contentMode = .scaleAspectFit
imageView.layer.cornerRadius = 4 imageView.layer.cornerRadius = 4
imageView.clipsToBounds = true imageView.clipsToBounds = true
return imageView return imageView
@ -168,13 +168,16 @@ extension MessageItemView {
self.dateLabel.text = message.dateText self.dateLabel.text = message.dateText
if let image = message.image { if let image = message.image {
imageView.isHidden = false imageView.isHidden = false
remakeImageViewConstraints(width: 0, height: 0) // 使
remakeImageViewConstraints(width: 200, height: 100)
//
imageView.removeImageViewer()
// loadDiskFileSynchronously // loadDiskFileSynchronously
imageView.kf.setImage(with: URL(string: image), options: [.targetCache(imageCache), .keepCurrentImageWhileLoading, .loadDiskFileSynchronously]) { [weak self] result in imageView.kf.setImage(with: URL(string: image), options: [.targetCache(imageCache), .keepCurrentImageWhileLoading, .loadDiskFileSynchronously]) { [weak self] result in
guard let self else { return } guard let self else { return }
guard let image = try? result.get().image else { guard let image = try? result.get().image else {
self.imageView.isHidden = true self.imageView.image = nil
return return
} }
@ -182,7 +185,8 @@ extension MessageItemView {
let isDarkMode = UIScreen.main.traitCollection.userInterfaceStyle == .dark let isDarkMode = UIScreen.main.traitCollection.userInterfaceStyle == .dark
var options: [ImageViewerOption] = [ var options: [ImageViewerOption] = [
.closeIcon(UIImage(named: "back")!), .closeIcon(UIImage(named: "back")!),
.theme(isDarkMode ? .dark : .light) .theme(isDarkMode ? .dark : .light),
.contentMode(.scaleAspectFit)
] ]
if #available(iOS 14.0, *) { if #available(iOS 14.0, *) {
options.append(.rightNavItemTitle(NSLocalizedString("save"), onTap: { [weak self] _ in options.append(.rightNavItemTitle(NSLocalizedString("save"), onTap: { [weak self] _ in
@ -246,3 +250,18 @@ extension MessageItemView {
} }
} }
} }
extension UIImageView {
func removeImageViewer() {
var _tapRecognizer: UIGestureRecognizer?
gestureRecognizers?.forEach {
// TapWithDataRecognizer
if "\(type(of: $0))" == "TapWithDataRecognizer" {
_tapRecognizer = $0
}
}
if let _tapRecognizer {
self.removeGestureRecognizer(_tapRecognizer)
}
}
}