JCMessageAvatarView.swift 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. //
  2. // JCMessageAvatarView.swift
  3. // JChat
  4. //
  5. // Created by deng on 10/04/2017.
  6. // Copyright © 2017 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. open class JCMessageAvatarView: UIImageView, JCMessageContentViewType {
  10. weak var delegate: JCMessageDelegate?
  11. public override init(image: UIImage?) {
  12. super.init(image: image)
  13. _commonInit()
  14. }
  15. public override init(image: UIImage?, highlightedImage: UIImage?) {
  16. super.init(image: image, highlightedImage: highlightedImage)
  17. _commonInit()
  18. }
  19. public override init(frame: CGRect) {
  20. super.init(frame: frame)
  21. _commonInit()
  22. }
  23. public required init?(coder aDecoder: NSCoder) {
  24. super.init(coder: aDecoder)
  25. _commonInit()
  26. }
  27. open func apply(_ message: JCMessageType) {
  28. self.message = message
  29. if message.senderAvator != nil {
  30. image = message.senderAvator
  31. return
  32. }
  33. weak var weakSelf = self
  34. message.sender?.thumbAvatarData({ (data, id, error) in
  35. if let data = data {
  36. weakSelf?.image = UIImage(data: data)
  37. } else {
  38. self.image = self.userDefaultIcon
  39. }
  40. })
  41. }
  42. private var message: JCMessageType!
  43. private lazy var userDefaultIcon = UIImage.loadImage("com_icon_user_36")
  44. private func _commonInit() {
  45. image = userDefaultIcon
  46. isUserInteractionEnabled = true
  47. layer.masksToBounds = true
  48. let tapGR = UITapGestureRecognizer(target: self, action: #selector(_tapHandler))
  49. self.addGestureRecognizer(tapGR)
  50. let longTapGesture = UILongPressGestureRecognizer(target: self, action: #selector(_longTap(_:)))
  51. longTapGesture.minimumPressDuration = 0.4
  52. addGestureRecognizer(longTapGesture)
  53. }
  54. @objc func _tapHandler(sender:UITapGestureRecognizer) {
  55. delegate?.tapAvatarView?(message: message)
  56. }
  57. @objc func _longTap(_ gestureRecognizer: UILongPressGestureRecognizer) {
  58. if gestureRecognizer.state == .began {
  59. delegate?.longTapAvatarView?(message: message)
  60. }
  61. }
  62. }