优雅弹出视图 1.0.0

ElegantPopover 1.0.0

Prasad Shinde 维护。



  • Prasad

Top Language Platform Version License

优雅弹出视图

在 iOS 中提供多种形状、边框、箭头样式和渐变的自定义弹出视图。

特性

  • 边框可以是颜色或渐变(任何层)。
  • 弹出视图可以有多个边框。
  • 可自定义箭头形状。
  • 实线箭头和轮廓箭头。

要求

  • Swift 4
  • iOS 11 及以上

安装

优雅弹出视图可在 CocoaPods 上使用。

将以下行添加到您的 Podfile 中。

pod 'ElegantPopover'

运行 pod install

依赖项

此库依赖于ClippingBezier库。

用法

// In your view controller
let arrow = PSArrow(height: 25, base: 35, baseCornerRadius: 0, direction: .up)
var design = PSDesign()
design.backGroundColor = UIColor.white

// 'contentView' is the UIView which contains 'Elegant Popover' UILabel
let popoverController = ElegantPopoverController(contentView: contentView,
                                                design: design,
                                                arrow: arrow,
                                                sourceView: view,
                                                sourceRect: CGRect(origin: CGPoint(x: 100, y: 170), size:CGSize.zero))
    
present(popoverController, animated: true)

定制

注意:以下定制应在创建ElegantPopoverController实例之前完成


渐变边框

let gradient = CAGradientLayer()
gradient.colors = [UIColor(red: CGFloat(222/255.0),
                           green: CGFloat(98/255.0),
                           blue: CGFloat(98/255.0),
                           alpha: CGFloat(1.0)).cgColor,
                   UIColor(red: CGFloat(255/255.0),
                           green: CGFloat(184/255.0),
                           blue: CGFloat(140/255.0),
                           alpha: CGFloat(1.0)).cgColor]
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)

design.borders = [PSBorder(filling: .layer(gradient), width: 12)]



弹出框内边距

design.insets = UIEdgeInsets(top: 20, left: 20, bottom: 20, right: 20)



弹出框的圆角半径

design.cornerRadius = 15



箭头方向

可以作为.any设置,让弹出框自行决定合适的方向

arrow.direction = .left



自定义箭头形状

arrow.height = 60
arrow.base = 140



多重边框

可以添加由 UIColorCALayer 组成的多重边框,任意组合。

design.borders = [PSBorder(filling: .layer(gradient), width: 12),
                  PSBorder(filling: .pureColor(UIColor(red: CGFloat(255/255.0),
                                                       green: CGFloat(184/255.0),
                                                       blue: CGFloat(140/255.0),
                                                       alpha: CGFloat(1.0))), width: 8)]



实心箭头

要创建实心箭头形状而不创建轮廓,所需的边框索引。索引从最外层边框0开始,到最内层边界结束。默认值是 nil,这意味着所有边框都将绘制箭头轮廓。

design.solidArrowBorderIndex = 1



链接到 UIBarButtonItem

let popoverController = ElegantPopoverController(contentView: contentView,
                                                design: design,
                                                arrow: arrow,
                                                barButtonItem: barButtonItem)

调整箭头位置到 barButtonItem

arrow.height = 25
arrow.base = 45



许可证

本项目受 MIT 许可证的许可 - 有关详细信息,请参阅许可文件