123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- //
- // KMAdvertisementShowView_iOS.swift
- // KMAdvertisement
- //
- // Created by lizhe on 2022/11/29.
- //
- import UIKit
- import Kingfisher
- open class KMAdvertisementShowView_iOS: KMAdvertisementBaseView {
- @IBOutlet var contentView: UIView!
-
- @IBOutlet weak var imageView: UIImageView!
-
- var timer: Timer?
- var index: Int = 0
-
- //内部使用数据
- fileprivate var data: [KMAdvertisementModelItem] = []
- /**
- @abstract 外部传入数据
- @param inputData 文件路劲
- */
- open var inputData: KMAdvertisementModel! {
- didSet {
- self.reloadData()
- }
- }
-
- convenience init (data: KMAdvertisementModel, superView: UIView) {
- self.init(frame: superView.bounds)
-
- superView.addSubview(self)
- self.autoresizingMask = [.flexibleHeight , .flexibleWidth]
-
- self.inputData = data
- self.reloadData()
- }
-
- // MARK: 初始化
- public required init?(coder decoder: NSCoder) {
- super.init(coder: decoder)
- initContentView()
- setup()
- }
-
- public override init(frame: CGRect) {
- super.init(frame: frame)
- initContentView()
- setup()
- }
- private func initContentView() {
- //绑定xib
- let resource = UINib(nibName: String(describing: self.classForCoder.self),
- bundle: Bundle(for: self.classForCoder.self))
- resource.instantiate(withOwner: self)
- addSubview(contentView)
- contentView.translatesAutoresizingMaskIntoConstraints = false
- NSLayoutConstraint.activate([
- contentView.topAnchor.constraint(equalTo: topAnchor),
- contentView.leftAnchor.constraint(equalTo: leftAnchor),
- contentView.rightAnchor.constraint(equalTo: rightAnchor),
- contentView.bottomAnchor.constraint(equalTo: bottomAnchor)])
- contentView.updateConstraintsIfNeeded()
- }
-
- func setup() {
- let tap = UITapGestureRecognizer(target: self, action: #selector(buttonAction))
- self.imageView.addGestureRecognizer(tap)
- self.imageView.isUserInteractionEnabled = true
- self.addTimer()
- }
-
- func reloadData() {
- self.data.removeAll()
- let array = inputData.content!
- for section in array {
- for item in section.content! {
- self.data.append(item)
- }
- }
-
- if self.data.count == 0 {
- self.removeTimer()
- self.removeFromSuperview()
- }
- self.recordTime()
- }
-
- //MARK: 定时器
- func addTimer() {
- self.removeTimer()
- timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector (recordTime),
- userInfo: nil, repeats: true)
- if let curTimer: Timer = timer {
- RunLoop.main.add(curTimer, forMode: .common)
- }
- }
-
- func removeTimer() {
- if (timer != nil) {
- timer?.invalidate ()
- timer = nil
- }
- }
-
- @objc func recordTime () {
- if self.data.count != 0 {
- index += 1
- if index >= self.data.count {
- index = 0
- }
- if self.data.count != 0 {
- let url = URL(string: KMAdvertisementModelTransition.transitionImagePath(image: self.data[index].imageURL!, highlight: false))
- self.imageView.kf.setImage(with: url)
- }
- }
- }
-
- @objc func buttonAction() {
- if self.data.count > index {
- let content = self.data[index]
- if actionCompletion != nil {
- actionCompletion!(.tap, content)
- }
- }
- }
- }
|