Newer
Older
LaserMethane / LaserMethane / ViewController / Event / BigImageViewController.swift
//
//  BigImageViewController.swift
//  LaserMethane
//
//  Created by 203 on 2021/7/30.
//

import FSPagerView
import Kingfisher
import UIKit

let PAGE_WIDTH = UIScreen.main.bounds.size.width
let PAGE_HEIGHT = UIScreen.main.bounds.size.height

class BigImageViewController: UIViewController, TransferImageDelegate {
    @IBOutlet var pageIndexLabel: UILabel!

    var pageIndex: Int? // 暂时不用
    // 图片九宫格数据集
    var imageArray: [String] = []

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let pagerView = FSPagerView(frame: view.frame)
        pagerView.dataSource = self
        pagerView.delegate = self
        pagerView.register(FSPagerViewCell.self, forCellWithReuseIdentifier: "cell")
        pagerView.transformer = FSPagerViewTransformer(type: .depth)
        view.addSubview(pagerView)
        pageIndexLabel.text = "\("(")\(String(describing: pageIndex))\("/")\(imageArray.count)\(")")"
    }

    // 接收上个页面传过来的值
    func transfer(controller: UIViewController, dic: NSDictionary) {
        pageIndex = dic["row"] as? Int
        let images = dic["images"] as? String
        images?.components(separatedBy: ",").forEach { it in
            self.imageArray.append(it.replacingOccurrences(of: "\\", with: "/").combineImagePath())
        }
    }
}

extension BigImageViewController: FSPagerViewDelegate {
    func pagerView(_ pagerView: FSPagerView, willDisplay cell: FSPagerViewCell, forItemAt index: Int) {
        pageIndexLabel.text = "\("(")\(index + 1)\("/")\(imageArray.count)\(")")"
    }
}

extension BigImageViewController: FSPagerViewDataSource {
    func numberOfItems(in pagerView: FSPagerView) -> Int {
        return imageArray.count
    }

    func pagerView(_ pagerView: FSPagerView, cellForItemAt index: Int) -> FSPagerViewCell {
        let cell = pagerView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)

        let url = URL(string: imageArray[index])
        cell.imageView?.contentMode = .scaleAspectFit
        cell.imageView?.kf.setImage(with: url)
        return cell
    }
}