ios:点击tabbar中间按钮弹出菜单(swift 3实现)

这篇博客介绍了如何使用Swift 3重写一个iOS应用中的功能,即点击TabBar中间按钮弹出菜单。作者分享了一个简单的示例,并提供了关键代码:ViewController.swift、MXPopMenuVC.swift和MXMenuButton.swift。源码可供下载,适合初学者练手。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先上一张图看看效果:
效果图

最近在自学swift3,就用swift3重写了这个小demo,在项目开发中像这种弹出菜单使用的几率还是很大的,在这里仅仅做一个简单的分享,本例子中没有难度大高深的代码,纯属练练手,如有不严谨的地方,还请多多指正!
下面mark一下一些关键的代码:

ViewController.swift

//
//  ViewController.swift
//  SwiftDemo
//
//  Created by turbomx on 2016/11/26.
//  Copyright © 2016年 xiazy. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var footView: UIView!
    @IBOutlet weak var popBtn: UIButton!

    @IBAction func popBtnClicked(_ sender: Any) {
        let bgImg :UIImage? = UIImage.imageWithCaptureView(view: self.view)
        let popVC : MXPopMenuVC = MXPopMenuVC()
        popVC.bgImg = bgImg
        self.navigationController?.pushViewController(popVC, animated: true)
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        self.title = "首页"
        let bgImgView :UIImageView = UIImageView(image: UIImage(named:"bg.png")!)
        bgImgView.frame = UIScreen.main.bounds
        self.view.insertSubview(bgImgView, belowSubview: self.footView)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

extension UIImage{
    //截屏
    class func imageWithCaptureView(view:UIView)->UIImage?{
        let size:CGSize = CGSize(width: view.bounds.size.width, height: view.bounds.size.height-40)
        //开启位图上下文
        UIGraphicsBeginImageContextWithOptions(size,false, 0)
        //获取上下文
        let ctx :CGContext? = UIGraphicsGetCurrentContext()
        //把控件的图层渲染到上下文,layer只能渲染
        view.layer .render(in: ctx!)
        //生成新图片
        let image:UIImage? = UIGraphicsGetImageFromCurrentImageContext()
        //关闭上下文
        UIGraphicsEndImageContext()
        return image;
    }
}

MXPopMenuVC.swift

//
//  MXPopMenuVC.swift
//  SwiftDemo
//
//  Created by turbomx on 2016/11/28.
//  Copyright © 2016年 xiazy. All rights reserved.
//


import UIKit

class MXPopMenuVC : UIViewController{

    var upIndex:Int = 0
    var downIndex:Int = 0
    var closeImgView:UIImageView?
    var myTimer:Timer?
    var bgImg:UIImage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值