iOS View的maskView实现刷屏动画效果

iOS 的maskView功能,确实是做动画时一个挺能打的利器。尤其是做那种“刷屏”式的过渡效果,视觉冲击感直接拉满。你可以通过一个透明或半透明的遮罩,配合UIView.animateCAAnimation,实现内容逐渐显现的动画,看起来像是整个界面被一层薄纱刷开了,蛮有感觉的。

动画的核心思路,其实就是动遮罩——maskView本身是个UIView,加到你主视图上当遮罩。你改它的alpha、改它的形状,外面的内容也就跟着变了。最玩法,就是用alpha从 0 到 1,来个渐显动画:

UIView.animate(withDuration: 0.5) {
  maskView.alpha = 1
}

再进阶一点,比如你想做圆形扩散,就得上CAShapeLayer,改path来搞形状变化:

let shapeLayer = CAShapeLayer()
shapeLayer.path = startPath
maskView.layer.mask = shapeLayer

let animation = CABasicAnimation(keyPath: "path") animation.fromValue = startPath animation.toValue = endPath shapeLayer.add(animation, forKey: "shapeChange")

玩法还挺多,你可以配合滚动、手势做互动效果。只要 mask 能动,刷屏动画就能玩出花。对了,记得动画尽量做轻量点,别太吃资源,不然掉帧一多,效果就全毁了。

如果你对动画感兴趣,推荐你也看看这些资料:

如果你打算搞点让用户眼前一亮的动画效果,maskView这招一定要掌握,会让你的 UI 动得更高级、更顺滑。

zip
MaskViews.zip 预估大小:37个文件
folder
MaskViews 文件夹
file
.DS_Store 6KB
folder
MaskView 文件夹
folder
MaskView.xcodeproj 文件夹
folder
project.xcworkspace 文件夹
file
contents.xcworkspacedata 153B
folder
xcuserdata 文件夹
folder
ie.xcuserdatad 文件夹
file
UserInterfaceState.xcuserstate 37KB
file
project.pbxproj 18KB
folder
xcuserdata 文件夹
folder
ie.xcuserdatad 文件夹
folder
xcschemes 文件夹
file
xcschememanagement.plist 480B
file
MaskView.xcscheme 3KB
folder
xcdebugger 文件夹
file
Breakpoints_v2.xcbkptlist 91B
file
maskView1效果.png 84KB
file
.DS_Store 6KB
folder
MaskView 文件夹
file
8.jpg 47KB
folder
Assets.xcassets 文件夹
folder
AppIcon.appiconset 文件夹
file
Contents.json 1KB
file
main.m 326B
file
2.jpg 54KB
file
1.jpg 59KB
file
3.jpg 44KB
file
base@2x.png 517KB
file
AppDelegate.h 269B
file
AppDelegate.m 2KB
file
defaultImage@2x.png 517KB
folder
Base.lproj 文件夹
file
LaunchScreen.storyboard 2KB
file
Main.storyboard 5KB
file
.DS_Store 6KB
file
4.jpg 57KB
folder
ZSwitchPic 文件夹
file
ZChangePicBaseView.h 1KB
file
ZSwitchPicView.h 2KB
file
defaultImage@2x.png 517KB
file
ZLeftToRightChangeView.h 675B
file
ZSwitchPicView.m 3KB
file
.DS_Store 6KB
file
ZChangePicBaseView.m 719B
file
ZLeftToRightChangeView.m 7KB
file
background@2x.png 439KB
file
ViewController.h 207B
file
mask@2x.png 3KB
file
Info.plist 1KB
file
7.jpg 44KB
file
ViewController.m 3KB
zip 文件大小:2.41MB