123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- //
- // TLAlbumPopView.swift
- // TLPhotosPicker
- //
- // Created by wade.hawk on 2017. 4. 19..
- // Copyright © 2017년 wade.hawk. All rights reserved.
- //
- import UIKit
- protocol PopupViewProtocol: class {
- var bgView: UIView! { get set }
- var popupView: UIView! { get set }
- var originalFrame: CGRect { get set }
- var show: Bool { get set }
- func setupPopupFrame()
- }
- extension PopupViewProtocol where Self: UIView {
- fileprivate func getFrame(scale: CGFloat) -> CGRect {
- var frame = self.originalFrame
- frame.size.width = frame.size.width * scale
- frame.size.height = frame.size.height * scale
- frame.origin.x = self.frame.width/2 - frame.width/2
- return frame
- }
- func setupPopupFrame() {
- if self.originalFrame != self.popupView.frame {
- self.originalFrame = self.popupView.frame
- }
- }
- func show(_ show: Bool, duration: TimeInterval = 0.1) {
- guard self.show != show else { return }
- self.layer.removeAllAnimations()
- self.isHidden = false
- self.popupView.frame = show ? getFrame(scale: 0.1) : self.popupView.frame
- self.bgView.alpha = show ? 0 : 1
- UIView.animate(withDuration: duration, animations: {
- self.bgView.alpha = show ? 1 : 0
- self.popupView.transform = show ? CGAffineTransform(scaleX: 1.05, y: 1.05) : CGAffineTransform(scaleX: 0.1, y: 0.1)
- self.popupView.frame = show ? self.getFrame(scale: 1.05) : self.getFrame(scale: 0.1)
- }) { _ in
- self.isHidden = show ? false : true
- UIView.animate(withDuration: duration) {
- if show {
- self.popupView.transform = CGAffineTransform(scaleX: 1, y: 1)
- self.popupView.frame = self.originalFrame
- }
- self.show = show
- }
- }
- }
- }
- open class TLAlbumPopView: UIView,PopupViewProtocol {
- @IBOutlet var bgView: UIView!
- @IBOutlet var popupView: UIView!
- @IBOutlet var popupViewHeight: NSLayoutConstraint!
- @IBOutlet var tableView: UITableView!
- @objc var originalFrame = CGRect.zero
- @objc var show = false
-
- deinit {
- // print("deinit TLAlbumPopView")
- }
-
- override open func awakeFromNib() {
- super.awakeFromNib()
- self.popupView.layer.cornerRadius = 5.0
- let tapGesture = UITapGestureRecognizer(target: self, action: #selector(tapBgView))
- self.bgView.addGestureRecognizer(tapGesture)
- self.tableView.register(UINib(nibName: "TLCollectionTableViewCell", bundle: Bundle(for: TLCollectionTableViewCell.self)), forCellReuseIdentifier: "TLCollectionTableViewCell")
- }
-
- @objc func tapBgView() {
- self.show(false)
- }
- }
|