优雅弹出视图
在 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
多重边框
可以添加由 UIColor
或 CALayer
组成的多重边框,任意组合。
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 许可证的许可 - 有关详细信息,请参阅许可文件。