| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- //
- // JCPhotoBar.swift
- // JChat
- //
- // Created by deng on 2017/3/31.
- // Copyright © 2017年 HXHG. All rights reserved.
- //
- import UIKit
- @objc public protocol JCPhotoBarDelegate: NSObjectProtocol {
- @objc optional func photoBarDeleteImage(index: Int)
- @objc optional func photoBarClickImage(index: Int)
- @objc optional func photoBarAddImage()
- }
- class JCPhotoBar: UIView {
-
- weak var delegate: JCPhotoBarDelegate? {
- get {
- return item1.delegate
- }
- set {
- item1.delegate = newValue
- item2.delegate = newValue
- item3.delegate = newValue
- item4.delegate = newValue
- }
- }
- override init(frame: CGRect) {
- super.init(frame: frame)
- _init()
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- private let offset = (UIScreen.main.bounds.size.width - 30 - 65 * 4) / 3
- private lazy var item1: JCPhotoBarItem = JCPhotoBarItem(frame: CGRect(x: 15, y: 0, width: 65, height: 65))
- private lazy var item2: JCPhotoBarItem = JCPhotoBarItem(frame: CGRect(x: 15 + 65 + self.offset, y: 0, width: 65, height: 65))
- private lazy var item3: JCPhotoBarItem = JCPhotoBarItem(frame: CGRect(x: 16 + (65 + self.offset) * 2, y: 0, width: 65, height: 65))
- private lazy var item4: JCPhotoBarItem = JCPhotoBarItem(frame: CGRect(x: 15 + (65 + self.offset) * 3, y: 0, width: 65, height: 65))
-
- func bindData(_ images: [UIImage]) {
- switch images.count + 1 {
- case 1:
- item1.setAddImage()
- item2.isHidden = true
- item3.isHidden = true
- item4.isHidden = true
- case 2:
- item1.setImage(images[0])
- item2.setAddImage()
- item3.isHidden = true
- item4.isHidden = true
- case 3:
- item1.setImage(images[0])
- item2.setImage(images[1])
- item3.setAddImage()
- item4.isHidden = true
- case 4:
- item1.setImage(images[0])
- item2.setImage(images[1])
- item3.setImage(images[2])
- item4.setAddImage()
- default:
- item1.setImage(images[0])
- item2.setImage(images[1])
- item3.setImage(images[2])
- item4.setImage(images[3])
- }
- }
- private func _init() {
-
- item1.index = 0
- item2.index = 1
- item3.index = 2
- item4.index = 3
- addSubview(item1)
- addSubview(item2)
- addSubview(item3)
- addSubview(item4)
- }
- }
- class JCPhotoBarItem: UIView {
-
- weak var delegate: JCPhotoBarDelegate?
- var index = 0
-
- var isHiddenDelButton: Bool {
- get {
- return delButton.isHidden
- }
- set {
- delButton.isHidden = newValue
- }
- }
- override init(frame: CGRect) {
- super.init(frame: frame)
- _init()
- }
-
- required init?(coder aDecoder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
-
- private lazy var iconView: UIImageView = UIImageView()
- private lazy var delButton: UIButton = UIButton()
-
- func setAddImage() {
- self.isHidden = false
- iconView.image = UIImage.loadImage("com_icon_add_65")
- delButton.isHidden = true
- }
-
- func setImage(_ image: UIImage) {
- self.isHidden = false
- delButton.isHidden = false
- iconView.image = image
- }
-
- private func _init() {
- iconView.frame = CGRect(x: 0, y: 0, width: self.width, height: self.height)
- let tapGR = UITapGestureRecognizer(target: self, action: #selector(_tapHandler))
- iconView.addGestureRecognizer(tapGR)
- iconView.isUserInteractionEnabled = true
- addSubview(iconView)
-
- let bgImage = UIImage.loadImage("icon_icon_close")
- delButton.frame = CGRect(x: self.width - 20, y: 0, width: 20, height: 20)
- delButton.setBackgroundImage(bgImage, for: .normal)
- delButton.addTarget(self, action: #selector(_delImage(_ :)), for: .touchUpInside)
- addSubview(delButton)
- }
-
- func _tapHandler() {
- if isHiddenDelButton {
- delegate?.photoBarAddImage?()
- return
- }
- delegate?.photoBarClickImage?(index: index)
- }
-
- func _delImage(_ sender: UIButton) {
- delegate?.photoBarDeleteImage?(index: index)
- }
- }
|