94 lines
2.4 KiB
Swift
94 lines
2.4 KiB
Swift
//
|
|
// ChatImageCell.swift
|
|
// yinmeng-ios
|
|
//
|
|
// Created by MaiMang on 2024/3/1.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class ChatImageCell: ChatBaseCell {
|
|
override var model: ChatSessionProtocol? {
|
|
didSet {
|
|
if let model = model as? ChatImageObject {
|
|
backImageView.kf.setImage(with: URL(string: model.url),
|
|
placeholder: UIImage(named: "public_avatar"))
|
|
}
|
|
}
|
|
}
|
|
|
|
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
|
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
|
bubbleView.addSubview(backImageView)
|
|
backImageView.snp.makeConstraints { make in
|
|
make.edges.equalToSuperview()
|
|
}
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
private lazy var backImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
imageView.isUserInteractionEnabled = true
|
|
imageView.layer.masksToBounds = true
|
|
imageView.contentMode = .scaleAspectFill
|
|
return imageView
|
|
}()
|
|
|
|
override func layoutMessageCell() {
|
|
super.layoutMessageCell()
|
|
setupCellLayout()
|
|
}
|
|
|
|
}
|
|
|
|
extension ChatImageCell {
|
|
|
|
func setupCellLayout() {
|
|
guard let model = model else {return}
|
|
if model.msg?.isOutgoingMsg == true { //我发送的
|
|
avatarImgView.snp.remakeConstraints { (make) in
|
|
make.size.equalTo(ChatUIConfig.layout.avatarSize)
|
|
make.right.equalToSuperview().offset(-10)
|
|
make.top.equalToSuperview().offset(ChatUIConfig.layout.cellContentInsets.top)
|
|
}
|
|
|
|
bubbleView.snp.remakeConstraints { make in
|
|
make.size.equalTo(model.contentSize)
|
|
make.top.equalTo(avatarImgView)
|
|
make.right.equalTo(avatarImgView.snp.left).offset(-10)
|
|
}
|
|
activityIndicatorView.snp.remakeConstraints { (make) in
|
|
make.centerY.equalTo(bubbleView)
|
|
make.right.equalTo(bubbleView.snp.left)
|
|
make.width.height.equalTo(30)
|
|
}
|
|
|
|
backImageView.snp.remakeConstraints { make in
|
|
make.edges.equalToSuperview()
|
|
}
|
|
// start
|
|
activityStartAnimating()
|
|
|
|
}else {
|
|
avatarImgView.snp.remakeConstraints { (make) in
|
|
make.size.equalTo(ChatUIConfig.layout.avatarSize)
|
|
make.left.equalToSuperview().offset(10)
|
|
make.top.equalToSuperview().offset(ChatUIConfig.layout.cellContentInsets.top)
|
|
}
|
|
|
|
bubbleView.snp.remakeConstraints { make in
|
|
make.size.equalTo(model.contentSize)
|
|
make.top.equalTo(avatarImgView)
|
|
make.left.equalTo(avatarImgView.snp.right).offset(10)
|
|
}
|
|
|
|
backImageView.snp.remakeConstraints { make in
|
|
make.edges.equalToSuperview()
|
|
}
|
|
}
|
|
}
|
|
}
|