Swift實現封裝PopMenu菜單,可在屏幕任意位置彈出


效果圖:

 

功能: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM