UIView 模仿左入右出,半透明显示底层View

iOS UIView 动画实现:左滑入右滑出的半透明效果
这篇博客介绍了如何使用UIView和CATransition在iOS中实现一个模仿左入右出的动画效果,同时设置半透明背景。通过Swift代码展示了如何创建、配置动画以及添加手势识别器,实现平滑的用户交互。

@IBAction func toNagView(_ sender: UIButton) {

//         let sb = UIStoryboard.init(name: "Main", bundle: nil)

//         let nagView = sb.instantiateViewController(withIdentifier:"MyNagViewController")as! MyNagViewController

//         nagView.view.backgroundColor = UIColor.init(white: 0, alpha: 0.5)

//         self.definesPresentationContext = true

//         nagView.modalPresentationCapturesStatusBarAppearance = true

//        self.modalPresentationStyle = .currentContext

//        self.navigationController?.pushViewController(nagView, animated: true)

//     self.present(nagView, animated: true, completion: nil)

        

        let objs = Bundle.main.loadNibNamed("NagView", owner: nil, options: nil)

        nagView = objs?.first as! NagView

        nagView?.frame = CGRect.init(x: 0, y: 20, width: self.view.frame.size.width, height: self.view.frame.size.height-20)

        nagView?.backgroundColor = UIColor.init(white: 0, alpha: 0.5) //主View透明,子View不透明

        

        let anima = CATransition.init()

        anima.type = kCATransitionPush //设置动画的类型

        anima.subtype = kCATransitionFromLeft //设置动画的方向

        anima.duration = 0.5

 

 

        nagView?.layer.add(anima, forKey: "showPushAnimation")   //如果用self.view,中间会闪一下

        

        let leftSwipe = UISwipeGestureRecognizer.init(target: self, action: #selector(nagViewShowAndMiss(gest:)))

        leftSwipe.direction = .left

        nagView?.addGestureRecognizer(leftSwipe)

        self.view.addSubview(nagView!)

    }

    @objc func nagViewShowAndMiss(gest:UISwipeGestureRecognizer){

        UIView.animate(withDuration: 0.5, animations: {

            gest.view!.frame = CGRect.init(x: -gest.view!.frame.size.width, y: 20, width: gest.view!.frame.size.width, height: gest.view!.frame.size.height)

        }) { (finished) in

            gest.view?.removeFromSuperview()

        }

    }

 

nagView.backgroundColor = UIColor.init(white: 0, alpha: 0.5) //主View透明,子View不透明

Alpha 会传递,color不会传递

基本动画CABasicAnimation 完毕后会闪现本View  anim.removedOnCompletion = false  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值