CocoaPods trunk is moving to be read-only. Read more on the blog, there are 17 months to go.

PopoverKit 0.2.0

PopoverKit 0.2.0

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Sep 2017
SwiftSwift Version 4.0
SPMSupports SPM

Maintained by archerzz.



  • By
  • archerzz

PopoverKit

A lightweight, swift library for displaying popover.

Description

Usage

if you use PopoverKit

// Present the view controller using the popover style.        
myPopooverViewController.pop.isNeedPopover = true

// Get the popover presentation controller and configure it.
myPopooverViewController.pop.popoverPresentationController?.sourceView = sender
myPopooverViewController.pop.popoverPresentationController?.sourceRect = sender.bounds
myPopooverViewController.pop.popoverPresentationController?.arrowDirection = .up

if you use UIPopoverPresentationController(System)

// Present the view controller using the popover style.
myPopooverViewController.modalPresentationStyle = .popover
present(myPopooverViewController, animated: true, completion: nil)
 
// Get the popover presentation controller and configure it.
let presentationController = myPopooverViewController.popoverPresentationController
presentationController?.sourceView = myView
presentationController?.sourceRect = sourceRect

As you see, so esay, just like system

PopoverTableViewController

  • Init your model(PureTitleModel or NormalModel)
let sortByDate = PureTitleModel(title: "按时间排序")
let sortBySize = PureTitleModel(title: "按大小排序")
let edit = NormalModel(iconName: "ic_note_edit", description: "编辑")
let delete = NormalModel(iconName: "ic_note_delete", description: "删除")
  • Init PopoverTableViewController
let vc = PopoverTableViewController(items: [sortByDate, sortBySize])
vc.pop.isNeedPopover = true
vc.pop.popoverPresentationController?.barButtonItem = sender
vc.pop.popoverPresentationController?.arrowPointY = self.navigationController?.navigationBar.frame.maxY
vc.delegate = self
present(vc, animated: true, completion: nil)
  • Or custom your own model(PopoverCellConfiguration)
/// Custom
struct CustomModel: PopoverCellConfiguration {
    
    public var width: CGFloat {
        let cell = AjustFontPopoverCell()
        config(cell: cell)
        let width = cell.systemLayoutSizeFitting(UILayoutFittingCompressedSize).width
        return width
    }
        
    public var resuable: PopoverCellResuable.Type {
        return AjustFontPopoverCell.self
    }
        
    public func config(cell: UITableViewCell) {
        guard let cell  = cell as? AjustFontPopoverCell else {
            return
        }
        // config delegate...
  }
    
    
}

Customization

PopoverConfiguration

Property

public enum PopoverConfiguration.Animation {
    case scale
    case alpha
}
  • arrowSize = CGSize(width: 12, height: 7)
  • cornerRadius = CGFloat(4)
  • animationDuration = TimeInterval(0.25)
  • backgroundColor = UIColor.white
  • dimmingViewColor = UIColor.black.withAlphaComponent(0.35)
  • showDimmingView = true
  • animation: Animation = .scale

Requirements

  • iOS 8.0+
  • Xcode 8.0+

Installation

Manually

  1. Download and drop PopoverKit in your project.
  2. Congratulations!

TODO

  • [] Ability to customize animation

License

PopoverKit is licensed under the MIT License, please see the LICENSE file.