SimplePopUpMenu
简单的自定义弹出式菜单,使用 Swift 实现
示例
要运行示例项目,先克隆仓库,然后从 Example 目录运行 pod install
要求
安装
SimplePopUpMenu 可通过 CocoaPods 获取。要安装它,只需将以下行添加到您的 Podfile 中
pod 'SimplePopUpMenu'
作者
mmachado53, [email protected]
使用方法
// YourUIViewControllerInstance.swift
import SimplePopUpMenu
@IBAction func tapButtonAction(_ sender:UIButton){
let popUpMenu:PopUpMenuUIViewControler = PopUpMenuUIViewControler()
/* Manage header of popupmenu */
popUpMenu.title = "Menu title"
popUpMenu.visibleHeader = true //default is false
/* Manage menu items */
var items:[PopUpMenuItem] = []
// item without icon
items.append(PopUpMenuItem(title: "Item A"))
// item with icon
items.append(PopUpMenuItem(title: "Item B",uiImage: uiImageInstance))
// item with tinted icon
items.append(PopUpMenuItem(title: "Item C",uiImage: uiImageInstance, tintImage:true))
/*Show menu*/
//permittedArrowDirections its a UIPopoverArrowDirection can be .up, .down, .left, .right, .any
popUpMenu.showMenu(menuIdentifier: "menu1", viewController: self, items: items, sourceView: sender,permittedArrowDirections: .any)
}
当选择一个项目时监听
有两种方式可以监听项目的选择
简单回调
// YourUIViewController.swift
import SimplePopUpMenu
@IBAction func tapButtonAction(_ sender:UIButton){
let popUpMenu:PopUpMenuUIViewControler = PopUpMenuUIViewControler()
let items:[PopUpMenuItem] = [
PopUpMenuItem(title: "Item A"),
PopUpMenuItem(title: "Item B")
]
popUpMenu.showMenu(menuIdentifier: "menu1", viewController: self, items: items, sourceView: sender,permittedArrowDirections: .any)
popUpMenu.setHandler { (selectedMenuIndex) in
print("selectedMenuIndex \(selectedMenuIndex)")
print("selectedMenuText \(items[selectedMenuIndex].title)")
}
}
使用代表
// YourUIViewController.swift
import SimplePopUpMenu
@IBAction func tapButtonAction(_ sender:UIButton){
let popUpMenu:PopUpMenuUIViewControler = PopUpMenuUIViewControler()
let items:[PopUpMenuItem] = [
PopUpMenuItem(title: "Item A"),
PopUpMenuItem(title: "Item B")
]
popUpMenu.showMenu(menuIdentifier: "menu1", viewController: self, items: items, sourceView: sender,permittedArrowDirections: .any)
popUpMenu.delegate = self
}
extension YourUIViewController : PopUpMenuDelegate{
func popupmenu(selectItem: Int, menuIdentifier: String) {
print("menuIdentifier \(menuIdentifier), selectedIndex: \(selectItem)")
}
}
自定义颜色
全局颜色自定义
必须在AppDelegate中配置
// AppDelegate.swift
import SimplePopUpMenu
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
/*
All Application default popupmenu colors
*/
var popUpMenuStyle:PopUpMenuStyle = PopUpMenuStyle()
// Color of all popup view
popUpMenuStyle.baseColor = UIColor.white
// Color of the items texts
popUpMenuStyle.textColor = UIColor.black
// Background color of the header view
popUpMenuStyle.headerColor = UIColor.black
// Color of the header text
popUpMenuStyle.headerTextColor = UIColor.white
// Color of separator
popUpMenuStyle.itemSeparatorColor = UIColor.black
// Background color of the item when is selected
popUpMenuStyle.selectedBackgroundColor = UIColor.black.withAlphaComponent(0.1)
// Set te global style
PopUpMenuUIViewControler.globalStyle = popUpMenuStyle
return true
}
实例颜色自定义
// YourUIViewController.swift
import SimplePopUpMenu
let myCustomPopUpStyle:PopUpMenuStyle = {
var result:PopUpMenuStyle = PopUpMenuStyle()
result.baseColor = UIColor.white
result.textColor = UIColor.black
result.headerColor = UIColor.black
result.headerTextColor = UIColor.white
result.itemSeparatorColor = UIColor.black
result.selectedBackgroundColor = UIColor.black.withAlphaComponent(0.1)
return result
}()
@IBAction func tapButtonAction(_ sender:UIButton){
let popUpMenu:PopUpMenuUIViewControler = PopUpMenuUIViewControler()
popUpMenu.style = myCustomPopUpStyle
let items:[PopUpMenuItem] = [
PopUpMenuItem(title: "Item A"),
PopUpMenuItem(title: "Item B")
]
popUpMenu.showMenu(menuIdentifier: "menu1", viewController: self, items: items, sourceView: sender,permittedArrowDirections: .any)
}
许可
SimplePopUpMenu 在 MIT 许可下可用。更多信息请参阅 LICENSE 文件。