Discovery Fab Button
一个具有圆形揭示动画的 swift fab 按钮
安装
CocoaPods
DiscoveryFabButtonView 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中
pod 'DiscoveryFabButton', '~> 0.1.1'
基本使用
如果您喜欢 DiscoveryFabButton 的默认颜色,只需创建其实例,给它一些菜单项并将其添加到您的视图中即可
// maybe in a controller
override func viewDidLoad() {
super.viewDidLoad()
let v = DiscoveryFabButtonView()
var menuItems = [MenuItem]()
menuItems.append(MenuItem(label: "Filter this 🙆♂️"))
menuItems.append(MenuItem(label: "Don't click here 🙅♂️"))
menuItems.append(MenuItem(label: "Whatever.. 🤷♂️"))
v.menuItems = menuItems
self.view.addSubview(v!)
}
如果您在 UITableViewController 中,直接添加 DiscoveryFabButton 将不起作用。您可以这样做
// maybe in a controller
override func viewDidLoad() {
super.viewDidLoad()
let v = DiscoveryFabButtonView()
var menuItems = [MenuItem]()
menuItems.append(MenuItem(label: "Filter this 🙆♂️"))
menuItems.append(MenuItem(label: "Don't click here 🙅♂️"))
menuItems.append(MenuItem(label: "Whatever.. 🤷♂️"))
v.menuItems = menuItems
v.inTableView() // <-- instead of self.view.addSubview(v!)
}
构造函数
一些构造函数可用于自定义颜色,或提供菜单项
init(buttonColor:UIColor)
init(buttonColor:UIColor, buttonIcon:UIImage)
init(discoveryColor:UIColor)
init(buttonColor:UIColor, buttonIcon:UIImage, discoveryColor:UIColor)
init(buttonColor:UIColor, buttonIcon:UIImage, menu:[MenuItem])
init(buttonColor:UIColor, buttonIcon:UIImage, discoveryColor:UIColor, menu:[MenuItem])
更改属性
let v = DiscoveryFabButtonView()
v.buttonIcon = UIImage(named: "search")
v.buttonColor = #colorLiteral(red: 0.937254902, green: 0.462745098, blue: 0.4784313725, alpha: 1)
v.discoveryColor = #colorLiteral(red: 0.3921568627, green: 0.3411764706, blue: 0.6509803922, alpha: 1)
v.menuItemsColor = #colorLiteral(red: 0.4901960784, green: 0.4784313725, blue: 0.737254902, alpha: 1)
## 菜单项 菜单项有一个 label
和一个 id
,两者都是 String
类型。其中 id
标签不是必需的,但可以提供。
let menuItem = MenuItem(label: "Awesome label")
let menuItem = MenuItem(id: "somethingUnique", label: "Awesome label")
## 公开方法
inTableView
将按钮直接添加到窗口中。移除与否取决于您,意味着如果在一个控制器内部调用 inTableView
,然后允许用户导航到另一个控制器,如果您不在控制器中的 viewWillDisappear
内部调用 remove
,则按钮依然可见。
override func viewDidLoad() {
...
let v = DiscoveryFabButtonView()
v.inTableView()
....
}
override func viewWillDisappear(_ animated: Bool) {
v.remove()
}
remove
将从其父视图中移除视图
let v = DiscoveryFabButtonView()
v.remove()
toggle
,show
,dismiss
允许您从代码中打开/关闭菜单
let v = DiscoveryFabButtonView()
v.show()
v.dismiss()
v.toggle()
代理
1. 使你的视图控制器遵循 DiscoveryFabButtonViewDelegate 协议
class ViewController: UIViewController, DiscoveryFabButtonViewDelegate
2. 将代理分配给你的 AwesomeSpotlightView 视图实例
let v = DiscoveryFabButtonView()
v.delegate = self
3. 实现代理协议方法
func onOpen()
[可选]func onClose()
[可选]func onMenuItemSelected(menuItem: MenuItem, index: Int)
[必选]func onMenuItemUnselected(menuItem: MenuItem, index: Int)
[可选]