JCAlertView.swift 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. //
  2. // JCAlertView.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/7/18.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. class JCAlertView: NSObject {
  10. fileprivate var alertView: UIAlertView!
  11. private override init() {}
  12. static func bulid() -> JCAlertView {
  13. let alertView = UIAlertView()
  14. let alert = JCAlertView()
  15. alert.alertView = alertView
  16. return alert
  17. }
  18. @discardableResult
  19. public func setDelegate(_ delegate: AnyObject?) -> JCAlertView {
  20. alertView.delegate = delegate
  21. return self
  22. }
  23. @discardableResult
  24. public func setTitle(_ title: String) -> JCAlertView {
  25. alertView.title = title
  26. return self
  27. }
  28. @discardableResult
  29. public func setMessage(_ message: String) -> JCAlertView {
  30. alertView.message = message
  31. return self
  32. }
  33. @discardableResult
  34. public func setTag(_ tag: Int) -> JCAlertView {
  35. alertView.tag = tag
  36. return self
  37. }
  38. @discardableResult
  39. public func addButton(_ buttonTitle: String) -> JCAlertView {
  40. alertView.addButton(withTitle: buttonTitle)
  41. return self
  42. }
  43. @discardableResult
  44. public func addCancelButton(_ buttonTitle: String) -> JCAlertView {
  45. alertView.addButton(withTitle: buttonTitle)
  46. let count = alertView.numberOfButtons
  47. alertView.cancelButtonIndex = count - 1
  48. return self
  49. }
  50. @discardableResult
  51. public func addImage(_ image: UIImage) -> JCAlertView {
  52. let imageView = UIImageView()
  53. let scale = 270 / image.size.width
  54. imageView.image = image.resizeImage(CGSize(width: image.size.width * scale, height: image.size.height * scale))
  55. alertView.setValue(imageView, forKey: "accessoryView")
  56. return self
  57. }
  58. public func show() {
  59. alertView.show()
  60. }
  61. }
  62. // JMessage
  63. extension JCAlertView {
  64. @discardableResult
  65. public func setJMessage(_ message: JMSGMessage) -> JCAlertView {
  66. switch(message.contentType) {
  67. case .text:
  68. if message.ex.isBusinessCard {
  69. self.setMessage(message.ex.businessCardName! + "的名片")
  70. } else {
  71. let content = message.content as! JMSGTextContent
  72. self.setMessage(content.text)
  73. }
  74. case .image:
  75. let content = message.content as! JMSGImageContent
  76. guard let image = UIImage(contentsOfFile: content.originMediaLocalPath ?? content.thumbImageLocalPath!) else {
  77. break
  78. }
  79. self.addImage(image)
  80. case .file:
  81. let content = message.content as! JMSGFileContent
  82. if message.ex.isShortVideo {
  83. self.setMessage("[小视频]")
  84. } else {
  85. self.setMessage("[文件] \(content.fileName)")
  86. }
  87. case .location:
  88. let content = message.content as! JMSGLocationContent
  89. self.setMessage("[位置] " + content.address)
  90. case .voice:
  91. self.setMessage("[语音消息]")
  92. default :
  93. break
  94. }
  95. return self.addCancelButton("取消")
  96. .addButton("确定")
  97. }
  98. }