一个可定制和动画的弹出气球视图,具有数学上正确的平滑圆角。 还提供对 UIBezierPath 的访问。
这个库允许您创建一个用于弹出气球的 UIBezierPath
,带有一个茎和一个圆角矩形。 气球具有数学上正确的平滑圆角,并且可以定制。
还有一个 BalloonShapeView
,它是一个具有可动画气球的视图。
可以通过在 BalloonConfiguration
对象上设置属性来配置气球
cornerRadius
:气球的圆角半径,可以是 .oval
表示椭圆形,或 .fixed(value)
表示固定值,或 none
表示没有圆角。
stem
:茎的配置,具有以下属性
edge
:茎连接到的边:.bottom
,.top
,.left
或 .right
offset
:默认情况下,茎位于边的中心。 使用此属性来偏移它。 正偏移将茎向右(或向下)移动,负偏移将茎向左(或向上)移动size
:茎的大小。cornerSmoothening
:如何平滑茎与其连接的边之间的角。 可以是 enabled
,disabled
或 custom(widthRatio, heightRatio)
。tipSmoothenWidth
:我们应该在多少个点上平滑茎的尖端。 0 表示尖端是尖锐的,值越大,尖端用弧线平滑的程度越高。要创建 UIBezierPath
气球,您可以调用
UIBezierPath.init(balloonInRect:configuration:)
,指定气球要放入的矩形和气球的配置。 整个气球和茎都将适合给定的矩形。
您也可以调用 UIBezierPath.init(balloonWithRect:configuration)
,这将创建一个气球路径,其中茎位于给定矩形的外部。
如果您需要一个作为视图的气球,请使用 BalloonShapeView
。
使用 configuration
参数或便利属性(例如 stemWidth
,stemHeight
,cornerRadius
,stemOffset
)配置气球。 这些便利属性也可以从 InterfaceBuilder 访问。
要为配置的更改添加动画效果,请在动画块中调用 layoutIfNeeded()
UIView.animateWithDuration(0.25) {
// modify configuration
balloonView.configuration.cornerRadius = .fixed(40)
balloonView.layoutIfNeeded()
}
BalloonShapeView
公开了 CAShapeLayer
的大多数属性,例如 fillColor
和 strokeColor
以及 lineWidth
。