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 ...
随机推荐
- linux中bin与sbin目录的作用及区别介绍
linux中bin与sbin目录的作用及区别介绍 本文介绍下,linux中的二个主要目录:bin与sbin,它们的作用与区别,学习linux的朋友可以参考下 在linux系统中,有两个重要的目录:bi ...
- xargs命令学习
1.xargs复制文件 目录下文件结构为: . ├── demo1 │ ├── test.lua │ ├── test.php │ └── test.txt └── demo2 执行命令: find ...
- 利用WeX5给手机APP增加短信验证码功能
帖子来源:http://bbs.wex5.com/thread-70908-1-1.html 遇到一个手机APP项目客户要求注册到APP上的用户手机号必须是真实的通过X5平台整合短信发送平台接口完成了 ...
- keepalive配置db层的ha的一些注意点
具体db是那种都一样 db先做好replica,可以用自己带的,或者drbd的磁盘复制 db和keepalived必须在同一主机 keepalived里面的rs必须只有一个(否则,做不了主从,理论上会 ...
- [ML] Gradient Descend Algorithm [Octave code]
function [theta, J_history] = gradientDescentMulti(X, y, theta, alpha, num_iters) m = length(y); % n ...
- iis应用程序池假死问题
“Comprehensive orientate 16:05:43 查看原文 IIS貌似问题不少 问:IIS 网站 并发连接线不多,但是运行一段时间后 就非常慢,系统资源占用都正常,一回收应用 ...
- 学习了django对于sqlite3进行了了解,谈谈看法
学习了django对于sqlite3进行了了解,谈谈看法 由于django默认使用的是sqlite3,写了几个建表语句, 然后数据做下迁移,其实就是建表语句的执行. 一直对sqlite3没有一个直观的 ...
- Seetaface 向树莓派 移植
seetaface由中科院计算所山世光研究员带领的人脸识别研究组研发.代码基于C++实现,不依赖第三方库.然而,目前开源的代码,是在windows vs上编译的,对于我们这帮mac/linux用户来说 ...
- 「小程序JAVA实战」小程序的页面重定向(60)
转自:https://idig8.com/2018/09/24/xiaochengxujavashizhanxiaochengxudeyemianzhongdingxiang59/ 在我们正常的浏览网 ...
- FoxPro 游标指针操作
查询上一记录skip -1 *相对定位 指针向上移动一条记录if bof() *测试当前记录指针是否超出第一条记录 go top *绝对定位表的第一条记录endifthisform.refresh ...