mirror of
https://github.com/Finb/Bark.git
synced 2025-12-08 21:36:01 +00:00
优化图片未加载时导致的布局问题
This commit is contained in:
parent
fb252f20c9
commit
c1d9dfe7f6
@ -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)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user