GalleryCell.swift 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import UIKit
  2. import DcCore
  3. import SDWebImage
  4. class GalleryCell: UICollectionViewCell {
  5. static let reuseIdentifier = "gallery_cell"
  6. weak var item: GalleryItem?
  7. var imageView: SDAnimatedImageView = {
  8. let view = SDAnimatedImageView()
  9. view.contentMode = .scaleAspectFill
  10. view.clipsToBounds = true
  11. view.backgroundColor = DcColors.defaultBackgroundColor
  12. return view
  13. }()
  14. private lazy var playButtonView: PlayButtonView = {
  15. let playButtonView = PlayButtonView()
  16. playButtonView.isHidden = true
  17. return playButtonView
  18. }()
  19. override init(frame: CGRect) {
  20. super.init(frame: frame)
  21. setupSubviews()
  22. }
  23. required init?(coder: NSCoder) {
  24. fatalError("init(coder:) has not been implemented")
  25. }
  26. override func prepareForReuse() {
  27. super.prepareForReuse()
  28. item?.onImageLoaded = nil
  29. item = nil
  30. }
  31. private func setupSubviews() {
  32. contentView.addSubview(imageView)
  33. imageView.translatesAutoresizingMaskIntoConstraints = false
  34. imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 0).isActive = true
  35. imageView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0).isActive = true
  36. imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: 0).isActive = true
  37. imageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true
  38. contentView.addSubview(playButtonView)
  39. playButtonView.translatesAutoresizingMaskIntoConstraints = false
  40. playButtonView.centerInSuperview()
  41. playButtonView.constraint(equalTo: CGSize(width: 50, height: 50))
  42. }
  43. func update(item: GalleryItem) {
  44. self.item = item
  45. item.onImageLoaded = { [weak self] image in
  46. self?.imageView.image = image
  47. }
  48. playButtonView.isHidden = !item.showPlayButton
  49. imageView.image = item.thumbnailImage
  50. }
  51. override var isSelected: Bool {
  52. willSet {
  53. // to provide visual feedback on select events
  54. contentView.backgroundColor = newValue ? DcColors.primary : .white
  55. imageView.alpha = newValue ? 0.75 : 1.0
  56. }
  57. }
  58. }