DiscoveryFabButton 0.1.2

DiscoveryFabButton 0.1.2

Daniele De Matteo 维护。




  • 作者:
  • Daniele De Matteo

Discovery Fab Button

一个具有圆形揭示动画的 swift fab 按钮

alt text

alt text

alt text

alt text

安装

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()

toggleshowdismiss

允许您从代码中打开/关闭菜单

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) [可选]