StickyButton 1.1.2

StickyButton 1.1.2

Achref Marzouki 维护。




StickyButton

适用于 iOS 的粘性浮动操作按钮。

功能 ⦿ 预览 ⦿ 要求 ⦿ 安装 ⦿ 用法 ⦿ 待办事项 ⦿ 作者 ⦿ 许可

该项目受 Floaty 项目启发,而 Floaty 项目本身又受到 KCFloatingActionButton 的启发。基本上,我想得到 Floaty 按钮所做的事情,并增加更多功能和灵活性。

功能

  • 完全可定制
  • 在 Swift 和 Objective-C 项目中都有效
  • 支持界面构建器
  • 用户友好
  • 支持 RLT
  • 支持侧边滑动更改
  • 兼容性和可定制性的无障碍设计
  • 支持界面方向变化
  • 提供全局实例,适用于所有屏幕,兼容 UIWindowSceneDelegate 和 iOS 13

预览

要求

  • iOS 11.0 和更高版本
  • Swift 5.0

安装

Cocoapods

use_frameworks!
pod 'StickyButton', '~> 1.0'

然后运行安装命令

$ pod install

手动

只需将《StickyButton》文件夹中的所有内容添加到您的项目中。

用法

界面构建器

全局管理

如果您想在所有应用的视图上显示粘性按钮,可以使用以下的全局和共享实例。

StickyButton.global.button.addItem(title: "Item 1", icon: UIImage(named: "icon"), handler: nil)
StickyButton.global.button.addItem(title: "Item 2", icon: UIImage(named: "icon"), handler: nil)
StickyButton.global.show()

如果您想隐藏某些视图控制器中的按钮,只需在viewDidLoad()方法中调用StickyButton.global.hide()即可。

通过代码

let stickyButton = StickyButton(size: 80)
view.addSubview(stickyButton)
stickyButton.addItem(title: "Hello", icon: UIImage(named: "icon1"), handler: nil)
stickyButton.addItem(title: "Wold", icon: UIImage(named: "icon2")) { item in
    // action goes here
}

自定义

您可以直接从按钮中自定义按钮外观、项目以及展开背景。以下所有属性及其默认值。

stickyButton.size = 80
stickyButton.horizontalMargin = 20
stickyButton.bottomMargin = 20
stickyButton.itemsSpacing = 8
stickyButton.buttonTintColor = .white
stickyButton.buttonBackgroundColor = UIColor(red: 31/255.0, green: 180/255.0, blue: 246/255.0, alpha: 1)

stickyButton.overlayViewBackgroundColor = UIColor.black.withAlphaComponent(0.5)

stickyButton.buttonImage = UIImage(named: "plus")
stickyButton.closeButtonImage = UIImage(named: "cross")
stickyButton.rotationDegree = 45

stickyButton.shadowRadius = 3
stickyButton.shadowOffset = CGSize(width: 0, height: 2)
stickyButton.shadowOpacity = 0.4
stickyButton.shadowColor = .black

stickyButton.autoCloseOnBackgroundTap = true
stickyButton.showMenuWhenEmpty = true
stickyButton.animateEmpty = true
stickyButton.showOnTopOfKeyboard = true

stickyButton.itemSize = 50
stickyButton.itemIconTintColor = nil
stickyButton.itemIconBackground = .white
stickyButton.itemTitleTextColor = .darkGray
stickyButton.itemTitleBackground = .white
stickyButton.itemTitleFontName = "Helvetica"
stickyButton.itemTitleFontSize = 13
stickyButton.itemTitleOffset = 20

委托

您可以使用StickyButtonDelegate协议来处理StickyButton事件。

func stickyButtonShouldShowItems() -> Bool
func stickyButtonWillShowItems()
func stickyButtonDidShowItems()

func stickyButtonShouldHideItems() -> Bool
func stickyButtonWillHideItems()
func stickyButtonDidHideItems()

func stickyButtonShouldChangeSide() -> Bool
func stickyButtonWillChangeSide()
func stickyButtonDidChangeSide()

待办

  • 添加委托支持
  • 添加显示菜单的不同动画
  • 单元测试和UI覆盖率

作者

Achref Marzouki https://github.com/ach-ref

许可证

StickyButton遵从MIT许可证。有关更多信息,请参阅LICENSE文件。