swift 自定义弹框
//
// ViewController.swift
// animationAlert
//
// Created by su on 15/12/9.
// Copyright © 2015年 tian. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
//灰色的遮挡板
let overLayView = UIView(frame: self.view.bounds)
overLayView.backgroundColor = UIColor.blackColor()
overLayView.alpha = 0
//加入场景
self.view.addSubview(overLayView)
//警告框相关的代码
//警告框的宽度
let alerDimension:CGFloat = 250
let alertViewFrame = CGRect(x: self.view.bounds.size.width / 2 - alerDimension / 2, y: self.view!.bounds.size.height / 2 - alerDimension / 2, width: alerDimension, height: alerDimension)
let alertView = UIView(frame: alertViewFrame)
alertView.backgroundColor = UIColor(patternImage: UIImage(named: "alert_box")!)
alertView.alpha = 1
//警告框初始尺寸为1.2 倍
alertView.transform = CGAffineTransformMakeScale(1.2, 1.2)
//设置圆角半径
alertView.layer.cornerRadius = 10
//设置阴影
//颜色
alertView.layer.shadowColor = UIColor.blackColor().CGColor
//阴影偏移
alertView.layer.shadowOffset = CGSizeMake(0, 5)
//阴影透明度
alertView.layer.shadowOpacity = 0
//阴影的半径
alertView.layer.shadowRadius = 10
self.view.addSubview(alertView)
//延时设置
var minseconds = 1 * Double(NSEC_PER_MSEC)
var dtime = dispatch_time(DISPATCH_TIME_NOW, Int64(minseconds))
dispatch_after(dtime, dispatch_get_main_queue()) { () -> Void in
//自定义警告框动画的上半部分
UIView.animateWithDuration(0.3, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
overLayView.alpha = 0.3
alertView.alpha = 1
}, completion: nil)
let scale = JNWSpringAnimation(keyPath: "transform.scale")
scale.damping = 14
scale.stiffness = 14
scale.mass = 1
scale.fromValue = 1.2
scale.toValue = 1
alertView.layer.addAnimation(scale, forKey: scale.keyPath)
alertView.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1, 1)
}
minseconds = 3 * Double(NSEC_PER_MSEC)
dtime = dispatch_time(DISPATCH_TIME_NOW, Int64(minseconds))
dispatch_after(dtime, dispatch_get_main_queue()) { () -> Void in
//下半部分消失
UIView.animateWithDuration(1, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
overLayView.alpha = 0
alertView.alpha = 0
}, completion: nil)
let scaleOut = JNWSpringAnimation(keyPath: "tranform.scale")
scaleOut.damping = 14
scaleOut.stiffness = 14
scaleOut.mass = 1
scaleOut.fromValue = 1
scaleOut.toValue = 0.7
alertView.layer.addAnimation(scaleOut, forKey: scaleOut.keyPath)
alertView.transform = CGAffineTransformMakeScale(0.7, 0.7)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
swift 自定义弹框的更多相关文章
- vue3系列:vue3.0自定义弹框组件V3Popup|vue3.x手机端弹框组件
基于Vue3.0开发的轻量级手机端弹框组件V3Popup. 之前有分享一个vue2.x移动端弹框组件,今天给大家带来的是Vue3实现自定义弹框组件. V3Popup 基于vue3.x实现的移动端弹出框 ...
- RN code push自定义弹框
最近在弄react native的code push热更新问题.开始是用的后台默默更新配置.由于微软服务器速度问题,经常遇到用户一直在下载中问题.而用户也不知道代码需要更新才能使用新功能,影响了正常业 ...
- vue自定义弹框
vue 全局自定义简单弹框 https://www.jianshu.com/p/1307329aa09e https://www.cnblogs.com/crazycode2/p/7907905.ht ...
- html自定义弹框
一.要实现的功能 1.弹框弹出时有遮罩 2.弹框内的文字过多时右侧有滚动条 3.根据执行结果变更弹框title的样式 二.具体实现 思路:定义一个有宽高的div,默认隐藏,当要显示时,设置为dis ...
- artDialog自定义弹框
弹框内容:<div class='boxy' style="display:none;" id="boxy"> //将div设置成隐藏效果 < ...
- android之自定义弹框
step1 创建窗体 final AlertDialog dialog =new Builder(this).create(); step2 获取View View viewDialog =View. ...
- svelte组件:Svelte自定义弹窗Popup组件|svelte移动端弹框组件
基于Svelte3.x自定义多功能svPopup弹出框组件(组件式+函数式) 前几天有分享一个svelte自定义tabbar+navbar组件,今天继续带来svelte自定义弹窗组件. svPopup ...
- 考拉Android统一弹框
作者:钱成杰 背景 在快速开发的背景下,经历了n个版本后的考拉Android App中已经存在了各种各样看似相同却各有差别的弹框样式.其中包括系统弹框和自定义弹框,并且在线上时常会出现IllegalA ...
- layer弹框在实际项目中的一些应用
官方介绍:layer至今仍作为layui的代表作,受众广泛并非偶然,而是这五年多的坚持,不断完善和维护.不断建设和提升社区服务,使得猿们纷纷自发传播,乃至于成为今天的Layui最强劲的源动力.目前,l ...
随机推荐
- 国内yum源的安装(163,阿里云,epel)
----阿里云镜像源 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 2.下载新的 ...
- Asp.net MVC Comet 推送
一.简介 在Asp.net MVC实现的Comet推送的原理很简单. 服务器端:接收到服务器发送的AJAX请求,服务器端并不返回,而是将其Hold住,待到有东西要通知客户端时,才将这个请求返回. 客户 ...
- C#:进程、线程、应用程序域(AppDomain)与上下文分析
进程 进程是操作系统用于隔离众多正在运行的应用程序的机制.在.Net之前,每一个应用程序被加载到单独的进程中,并为该进程指定私有的虚拟内存.进程不能直接访问物理内存,操作系统通过其它的处理把这 ...
- emacs之配置php
php-setting.el (require 'php-mode) 以后丰富
- Mysql中用between...and...查询日期时注意事项
select count(1) from user where regist_date between '2017-07-25 00:00:00' and '2017-07-25 24:00:00' ...
- 基于nginx-rtmp-module模块实现的HTTP-FLV直播模块(nginx-http-flv-module)
本文后续的内容将在这里更新:<基于nginx-rtmp-module模块实现的HTTP-FLV直播模块(nginx-http-flv-module)续>.注意:下文的配置很多已经不能用了, ...
- JWPlayer快速入门指南(中文)
将JW Player嵌入到网页中非常的简单,只需要进行如下3个步骤: 1.解压mediaplayer-viral.zip文件,将jwplayer.js和player.swf文件拷贝到工程中: 2.在页 ...
- C++ 构造函数_初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式.例如: class Student { public: //构造函数初始化列表 Stude ...
- Supervisor安装与配置
Supervisor(http://supervisord.org/)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统 ...
- 彻底禁止win10更新
关闭win10自动更新: 可以用下面方法关闭: 1.首先在服务界面关闭Windows Update服务并设置为禁用并在恢复界面全部如下图设置为无操作. 2.只关闭了Windows Update服务发现 ...