效果图:

功能: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(),
.PopMenuTextFont(UIFont.systemFont(ofSize: ))
] //init (test随机生成点位置,注意:arrow点是基于屏幕的位置)
popMenu = SwiftPopMenu(menuWidth: , arrow: CGPoint(x: CGFloat(arc4random_uniform(UInt32(KSCREEN_WIDTH-)) + ), y: CGFloat(arc4random_uniform(UInt32(KSCREEN_HEIGHT-)) + )), 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

Swift实现封装PopMenu菜单,可在屏幕任意位置弹出的更多相关文章

  1. Delphi XE7实现的任意位置弹出菜单

    Delphi XE7中目前还没有弹出菜单组件,这个弹出菜单应用很普遍,在JAVA开发的安卓程序中很简单就可以用上了,应该说是一个标准控件.看了一些例子,但是都不能满足我想在任意位置弹出菜单需求,于是自 ...

  2. div样式position:fixed,不随屏幕滚动而滚动,导致屏幕太小时弹出层被遮挡,无法滚动查看的解决办法

    window.onscroll = function () { var sl = -Math.max(document.body.scrollTop, document.documentElement ...

  3. Swift 3 点击屏幕任意位置隐藏键盘

    func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(targe ...

  4. 有序无序Ul->Li Ol->Li菜单,默认点击当前弹出下拉,再次点击收起下拉菜单(变形2 ---修饰)

    从上面可以看出,两个问题,第一:下拉出现的太快太突然,第二:再点击下一个下拉菜单的时候,上一个不会闭合,针对这两个问题,接下来会一 一解决. 解决下拉太快: js中有个jquery效果,有一个效果是j ...

  5. 有序无序ul->li ol->li菜单,默认点击当前弹出下拉,再次点击收起下拉菜单

    实现这一效果利用css和js技术结合 以ul->li为例子 <!DOCTYPE html><html lang="en"><head> & ...

  6. iOS_21团购_顶部菜单和弹出菜单联动

    最后效果图: 各控件关系图1: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcHJlX2VtaW5lbnQ=/font/5a6L5L2T/fontsize ...

  7. 关于MFC主菜单和右键弹出菜单

    一.主菜单.弹出菜单和右键菜单的概念: 主菜单是窗口顶部的菜单,一个窗口或对话框只能有一个主菜单,但是主菜单可以被更改(SetMenu()更改): 创建方式:CMenu::CreateMenu(voi ...

  8. 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去

    适用于:.net2.0+ Winform项目 ------------------201508261813更新(源码有更新.Demo未更新)------------------ 重新绘制调整大小手柄( ...

  9. 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题

    如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 如何利用PopupWindow实现弹出菜单并解决焦点获取以及与软键盘冲突问题 在android中有时候可能要实现一个底部弹 ...

随机推荐

  1. 自己动手丰衣足食之 jQuery 数量加减插件

    引言 做一个手机端的订单相关项目中,其中下订单时需要用到数量加减的控件,可以设置默认值,也可以设置最大值和最小值.使用jQuery这么长时间了,平时很少去编写属于自己的插件,现在编写的时候对立面的一些 ...

  2. 请求facebook授权时,返回错误

    在请求facebook授权时,返回如下错误:所提供的网址不被应用程序配置所接纳.:应用程序的设置不允许一个或多个所提供的链接.它必须与网站的URL或Canvas的URL相符,或该域必须是应用程序的一个 ...

  3. CSS魔法堂:重拾Border之——图片作边框

    前言  当CSS3推出border-radius属性时我们是那么欣喜若狂啊,一想到终于不用再添加额外元素来模拟圆角了,但发现border-radius还分水平半径和垂直半径,然后又发现border-t ...

  4. grep命令详解

      用法格式 grep [option] pattern file   实验文件 [root@zejin240 tmp]# cat testdir/tfile 1 #include <stdio ...

  5. cacert.pem

    ## ## Bundle of CA Root Certificates ## ## Certificate data from Mozilla as of: Wed Sep 14 03:12:05 ...

  6. 【转】App开放接口api安全性—Token签名sign的设计与实现

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  7. LocalDB在IIS中的运行失败

    Using LocalDB with Full IIS, Part 1: User Profile http://blogs.msdn.com/b/sqlexpress/archive/2011/12 ...

  8. 轻量级ORM

    不知道可能称的上是ORM,其实就是一个DBHelper.看到网上不少人写自己的ORM,但我觉得都不太好. 我这个ORM,学习成本非常低,常用的方法仅有几个,在使用的过程中,你不需要有太多要注意的地方, ...

  9. Oracle 英文 非标准格式 日期 格式化

    最近在处理一张表的时候,需要按照日期排序,日期字段中日期的格式有两种. 格式一:07-Aug-2015 格式二:10/28/16 日期转化及格式化sql语句: select to_date('07-A ...

  10. SQL存储过程分页(通用的拼接SQL语句思路实现)

    多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...