效果圖:
功能:GitHub下載
只需要傳入菜單箭頭點位置、菜單寬度、數據源即可。
1、支持任意點彈出(點是基於整個屏幕位置)
2、會根據點位置自動計算菜單位置
3、背景色、文字等支持自定義設置
導入項目:
-
pods導入:pod 'SwiftPopMenu'
-
文件導入:下載Demo,導入SwiftPopMenu.swift文件即可
-
代碼現已支持 Swift5 (2.x已支持swift5,1.x支持swift3)
使用介紹:
import SwiftPopMenu
1、初始化
/// 初始化菜單 /// /// - Parameters: /// - menuWidth: 菜單寬度 /// - arrow: 箭頭位置是popmenu相對整個屏幕的位置 /// - datas: 數據源數組,icon允許傳空,若數據源傳空,菜單不會顯示 /// - configure: 配置信息,可不傳,不傳采用默認值 init(menuWidth:CGFloat,arrow:CGPoint,datas:[(icon:String,title:String)],configures:[SwiftPopMenuConfigure] = []) { /// }
2、顯示與移除
popMenu.show()
popMenu.dismiss()
3、點擊事件,提供兩種方式
- block回調處理
- 代理處理
4、參數配置(使用時可不傳)
public enum SwiftPopMenuConfigure { case PopMenuTextFont(UIFont) //菜單文字字體,默認systemFont(ofSize: 17) case PopMenuTextColor(UIColor) //菜單文字顏色,默認black case PopMenuBackgroudColor(UIColor) //菜單背景色,默認white case popMenuCornorRadius(CGFloat) //菜單圓角,默認6 case popMenuItemHeight(CGFloat) //菜單行高度(非整個高度),默認44 case popMenuSplitLineColor(UIColor) //菜單分割線顏色,默認(222,222,222) case popMenuIconLeftMargin(CGFloat) //icon左間距,默認15 case popMenuMargin(CGFloat) //菜單與屏幕邊距,默認10 case popMenuAlpha(CGFloat) //菜單背景透明度,默認0.3 }
完整示例代碼:
var popMenu:SwiftPopMenu! //數據源(icon可不填) let popData = [(icon:"saoyisao",title:"掃一掃"), (icon:"SignRule",title:"簽到規則"), (icon:"saoyisao",title:"掃一掃"), (icon:"SignRule",title:"簽到規則")] //設置參數(可不寫這個,采用默認值) let parameters:[SwiftPopMenuConfigure] = [ .PopMenuTextColor(UIColor.black), .popMenuItemHeight(44), .PopMenuTextFont(UIFont.systemFont(ofSize: 18)) ] //init (test隨機生成點位置,注意:arrow點是基於屏幕的位置) popMenu = SwiftPopMenu(menuWidth: 150, arrow: CGPoint(x: CGFloat(arc4random_uniform(UInt32(KSCREEN_WIDTH-100)) + 80), y: CGFloat(arc4random_uniform(UInt32(KSCREEN_HEIGHT-100)) + 80)), datas: popData,configures: parameters) //click popMenu.didSelectMenuBlock = { [weak self](index:Int)->Void in print("block select \(index)") self?.popMenu = nil } //show popMenu.show()
最新源碼下載:https://github.com/TangledHusky/SwiftPopMenu