CocoaPods trunk is moving to be read-only. Read more on the blog, there are 7 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.