- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章iOS仿AirPods弹出动画由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
本文实例为大家分享了ios仿airpods弹出动画的具体代码,供大家参考,具体内容如下 。
效果图 。
预览图 。
思路 。
在当前viewcontroller下present另外一个animationviewcontroller,在弹出的animationviewcontroller中播放动画,弹出的时候原来的viewcontroller上有一个全屏覆盖的maskview,在弹出时,有一个渐变动画(页面渐黑),在animationviewcontroller声明一个代理,在代理方法中实现收起的动画效果(dissmisscontroller和maskview消失) 。
主要代码 。
1
2
3
4
5
6
7
8
9
10
11
|
hcairpodsanimationviewcontroller *vc = [[hcairpodsanimationviewcontroller alloc] init];
vc.delegate = self;
vc.modalpresentationstyle = uimodalpresentationovercurrentcontext;
[uiview animatewithduration:0.2 animations:^{
self.maskbgview.alpha = 0.5;
} completion:nil];
[self presentviewcontroller:vc animated:yes completion:^{
[vc.animationview play];
}];
|
模态跳转的style有一个枚举值,在ios13以前modalpresentationstyle的默认值为uimodalpresentationfullscreen,ios13以后变成了uimodalpresentationpagesheet,在这里我们把style设置为uimodalpresentationovercurrentcontext弹出的这个控制器就会覆盖在原来的控制器之上 。
1
2
3
4
5
6
7
8
9
10
|
- (uiview *)maskbgview
{
if
(!_maskbgview) {
_maskbgview = [[uiview alloc] initwithframe:cgrectmake(0, 0, [uiscreen mainscreen].bounds.size.width, [uiscreen mainscreen].bounds.size.height)];
_maskbgview.backgroundcolor = [uicolor blackcolor];
_maskbgview.alpha = 0;
[self.view addsubview:_maskbgview];
}
return
_maskbgview;
}
|
一个覆盖全屏的maskview采用懒加载的方式实现 。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
- (
void
)initcontentview
{
cgfloat containerw = screen_width - 20;
cgfloat containerh = containerw * 0.9;
uiview *containerview = [[uiview alloc] initwithframe:cgrectmake(10, screen_height - containerh - 10, containerw, containerh)];
containerview.layer.cornerradius = 20;
containerview.backgroundcolor = [uicolor whitecolor];
[self.view addsubview:containerview];
self.animationview = [[lotanimationview alloc] initwithframe:cgrectmake(70, 70, containerw - 140, containerh - 140)];
[containerview addsubview:self.animationview];
self.animationview.animation = @
"gift_animation"
;
self.animationview.loopanimation = yes;
uibutton *confirmbutton = [[uibutton alloc] initwithframe:cgrectmake(0, 0, 200, 34)];
confirmbutton.center = cgpointmake(self.animationview.center.x, containerh - 44);
[confirmbutton settitle:@
"close"
forstate:uicontrolstatenormal];
[confirmbutton settitlecolor:[uicolor whitecolor] forstate:uicontrolstatenormal];
[confirmbutton setbackgroundcolor:[uicolor bluecolor]];
confirmbutton.layer.cornerradius = 10;
[confirmbutton addtarget:self action:@selector(onconfirmbuttonclick) forcontrolevents:uicontroleventtouchupinside];
[containerview addsubview:confirmbutton];
}
|
动画这里用到的是lottie这个动画开源库(airbnb),这个开源库主要的功能是可以将after effects制作的动画通过插件导出为json格式的文件,然后通过这个开源库解析成动画.
1
2
3
4
5
6
7
|
- (
void
)onconfirmbuttonclick
{
if
([self.delegate respondstoselector:@selector(onairpodsanimationviewcontrollerconfirmbuttonclick:)]) {
[self dismissviewcontrolleranimated:yes completion:nil];
[self.delegate onairpodsanimationviewcontrollerconfirmbuttonclick:self];
}
}
|
dissmiss当前的控制器,让viewcontroller来实现这个代理方法,并且在代理方法中隐藏maskview 。
1
2
3
4
5
6
|
- (
void
)onairpodsanimationviewcontrollerconfirmbuttonclick:(hcairpodsanimationviewcontroller *)vc
{
[uiview animatewithduration:0.2 animations:^{
self.maskbgview.alpha = 0.0;
} completion:nil];
}
|
项目地址:airpodsanimation 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.
原文链接:https://blog.csdn.net/Peter_Huang0623/article/details/103533619 。
最后此篇关于iOS仿AirPods弹出动画的文章就讲到这里了,如果你想了解更多关于iOS仿AirPods弹出动画的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!