Skip to content

kuibu-team/KBPopup

Repository files navigation

KBPopup

iOS带箭头的起泡弹窗

[TOC]

导入

CocoaPods

Podfile文件中加入

pod 'KBPopup', '~> 1.1.0'

使用

KBPopupView继承自KBDecorationView,实现了带箭头的圆角矩形边框

KBPopupView使用非常简单,只需要指定内容视图和内容视图的尺寸,然后调用show(in:)方法进行显示即可

import KBPopup

let myContentView = ...
let popupView = KBPopupView(contentView: myContentView)
popupView.contentSize = myContentViewSize
popupView.sourceView = button

popupView.show(in: self.view)

如果内容视图支持intrinsicContentSize(例如UILabel),则可以不指定contentSize属性

KBPopupView支持以下特性:

  • 指定边框的箭头高度、箭头圆角
  • 指定边框的圆角半径
  • 指定弹窗的外边距
  • 指定弹窗的来源视图或来源位置
  • KBDecorationView携带的特性

指定边框的箭头高度、箭头圆角

KBPopupView的箭头图形绘制参考了FTPopOverMenu的方案,KBPopupView提供了指定箭头高度和圆角半径的接口

popupView.arrowHeight = 20 				// 默认值是10
popupView.arrowCornerRadius = 6		// 默认值是3

指定边框的圆角半径

popupView.popupView = 10 // 默认值是8

指定弹窗的外边距

popupView.margin = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15) // 默认值是20

指定弹窗的来源视图或来源位置

KBPopupView会根据sourceView或sourceFrame来自动计算显示的位置和箭头的方向

popupView.sourceView = button
// 或
if let buttonFrame = button.window?.convert(button.frame, from: button.superview) {
    popupView.sourceFrame = buttonFrame
}

sourceFrame的优先级高于sourceView,指定sourceFrame时需要转化为目标位置在window上的位置

KBDecorationView携带的特性

KBDecorationView自带了几个非常有用的特性:

  • contentSize:内容尺寸
  • contentInsets:内容与边框的边距
popupView.contentSize = CGSize(width: 180, height: 66)
popupView.contentInsets = UIEdgeInsets(top: 15, left: 15, bottom: 15, right: 15) //默认值是10

LICENSE

此项目采用MIT开源协议,点击查看详情