From d16b0c8b4f4f0ce0b256a3a5adbcad31adb11697 Mon Sep 17 00:00:00 2001 From: Fin Date: Thu, 22 May 2025 18:03:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B6=88=E6=81=AF=E5=88=97=E8=A1=A8=E6=8C=89?= =?UTF-8?q?=E5=AE=9E=E9=99=85=E5=9B=BE=E7=89=87=E5=B0=BA=E5=AF=B8=E6=98=BE?= =?UTF-8?q?=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- View/MessageList/MessageItemView.swift | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/View/MessageList/MessageItemView.swift b/View/MessageList/MessageItemView.swift index e1514a4..356bfba 100644 --- a/View/MessageList/MessageItemView.swift +++ b/View/MessageList/MessageItemView.swift @@ -138,11 +138,6 @@ class MessageItemView: UIView { make.left.equalTo(12) make.right.equalTo(-12) } - imageView.snp.makeConstraints { make in - make.width.equalTo(panel).inset(12).priority(.low) - make.width.lessThanOrEqualTo(500) - make.height.equalTo(imageView.snp.width).multipliedBy(0.55) - } dateLabel.snp.makeConstraints { make in make.left.equalTo(contentStackView) make.top.equalTo(contentStackView.snp.bottom).offset(12) @@ -172,13 +167,28 @@ extension MessageItemView { if let image = message.image { imageView.isHidden = false // loadDiskFileSynchronously - imageView.kf.setImage(with: URL(string: image), options: [.targetCache(imageCache), .keepCurrentImageWhileLoading]) { [weak self] _ in + imageView.kf.setImage(with: URL(string: image), options: [.targetCache(imageCache), .keepCurrentImageWhileLoading, .loadDiskFileSynchronously]) { [weak self] result in // 获取系统是否是夜间模式 let isDarkMode = UIScreen.main.traitCollection.userInterfaceStyle == .dark self?.imageView.setupImageViewer(options: [.closeIcon(UIImage(named: "back")!), .theme(isDarkMode ? .dark : .light)]) + guard let self else { return } + guard let image = try? result.get().image else { + return + } + layoutImageView(image: image) } } else { imageView.isHidden = true } } + + func layoutImageView(image: UIImage) { + // iPad 下,图片宽度不超过 500。如果图片尺寸小于控件宽度,则以实际图片尺寸作为宽度 + let panelWidth = min(min(500, UIScreen.main.bounds.width - 32 - 24), image.width) + + imageView.snp.remakeConstraints { make in + make.width.equalTo(panelWidth) + make.height.equalTo(self.imageView.snp.width).multipliedBy(image.size.height / image.size.width) + } + } }