你如何在 iOS 中实现“时钟擦除”/径向擦除效果?

     2023-02-23     78

关键词:

【中文标题】你如何在 iOS 中实现“时钟擦除”/径向擦除效果?【英文标题】:How do you achieve a "clock wipe"/ radial wipe effect in iOS? 【发布时间】:2014-03-14 15:24:29 【问题描述】:

有时您会看到正在使用的“时钟擦除”动画。像这样的:

你将如何在 iOS 中实现这种效果?

(注意:这个问题是一个“铃声”。我想分享一种创建时钟擦除动画的技术,但 SO 没有分享教程的格式,所以我能来的最接近的就是问一个问题,然后提供答案。这是故意的,并试图分享其他人可能认为有用的信息。)

【问题讨论】:

我对这个问题及其答案投了赞成票,感谢分享。您不必证明自己的问题是合理的,实际上在帮助部分中鼓励您这样做:***.com/help/self-answer @2Dee,我不应该必须证明,但很多人出于愚蠢的原因拒绝投票。最好解释一下我问这个问题的原因,而不是冒着混淆的风险。 【参考方案1】:

答案:

您将创建 CAShapeLayer 并将其作为蒙版安装在您的视图层上。

然后,您需要在形状图层中安装一条弧线,该弧线横跨 360 度,半径为图像中心到角距离的一半。你会给它一个与半径相同的线宽。

最后,您将创建一个 CABasicAnimation,将形状图层的 strokeEnd 属性从 0 设置为 1.0。这将导致形状开始为空(图像完全被蒙版)并将蒙版动画化为一个越来越大的“饼片”,直到它成为图像的完整尺寸。

您可以在 github 上下载我编写的示例项目,其中显示了此动画的工作代码以及其他核心动画技术:

CA Animation demo on github


Swift 5 的编辑更新:

好的,这个帖子真的很老了。我试图构建示例项目并在大约 45 分钟后放弃了与 Xcode 的斗争。太多设置与当前项目格式不符。

时钟擦除演示需要用 Swift 重写,所以我才重新开始。

新项目可以在这个链接找到:https://github.com/DuncanMC/ClockWipeSwift

【讨论】:

谁对答案投了反对票?当然,我专门发布了这个问题来发布答案,因为 SO 没有教程格式。我认为时钟擦除教程对其他人有用,因为这是使用 Core Animation 弄清楚的一种非常棘手的技术。 邓肯的帖子太棒了!很有帮助:) 谢谢队友 嘿邓肯,我在设备上工作时遇到问题。运行 iOS7.1 的 iPhone 5s,操作系统是否有可能影响 CAAnimation 的更改或其他内容? @TaylorAbernethyNewman,该项目构建了一个仅限 iPad 的应用程序。那只是因为我想要它所做的不同动画的屏幕空间。然而,让它在 iPhone 上运行是微不足道的。您只需要更改目标设备并创建 iPhone 和 iPad 特定版本的 XIB 文件。 @AbhishekThapliyal 我会找时间用 Swift 重写它。在 Swift 中使用 Core Foundation 实际上更容易,因为它会为您处理 CF 类型和 Foundation 类型之间的转换,而您不必处理 NSNumber 和 NSValue。

如何在颤动中实现这种效果/布局?

】如何在颤动中实现这种效果/布局?【英文标题】:Howtoachievethiseffect/layoutinflutter?【发布时间】:2021-10-0520:29:18【问题描述】:我发现,这种搜索效果是内置在ios框架中的。但是这种布局如何在Flutter中实现呢?【问题讨论】:... 查看详情

如何在 Swift iOS 中实现 iMessage 渐变?

】如何在SwiftiOS中实现iMessage渐变?【英文标题】:HowcanIimplementtheiMessagegradientinSwiftiOS?【发布时间】:2020-12-2423:40:30【问题描述】:我正在努力实现的目标我正在尝试在SwiftiOS中实现渐变气泡效果,其中顶部的聊天气泡颜色较浅... 查看详情

如何在 Flutter 中实现“磨砂玻璃”效果?

】如何在Flutter中实现“磨砂玻璃”效果?【英文标题】:HowdoIdothe"frostedglass"effectinFlutter?【发布时间】:2017-09-1822:29:18【问题描述】:我正在编写一个Flutter应用程序,我想使用/实现iOS上常见的“磨砂玻璃”效果。我该怎... 查看详情

如何在导航栏菜单中实现平滑的向下滑动效果

】如何在导航栏菜单中实现平滑的向下滑动效果【英文标题】:HowtoachievesmootheslidedowneffectinNavbarMenu【发布时间】:2018-03-2404:43:24【问题描述】:目标-我想在一些滚动后实现向下滑动(用于导航栏)效果。我实际上实现了我想要... 查看详情

使 div 动画并出现顺时针旋转。即 Div 的径向擦除时钟效果

】使div动画并出现顺时针旋转。即Div的径向擦除时钟效果【英文标题】:Makingdivanimateandappearrotatingclockwise.i.eradialwipeclockeffectforDiv【发布时间】:2012-12-3116:44:37【问题描述】:我一直在搜索div的外观效果,例如here。这里的图像是... 查看详情

如何在ios中实现刷新令牌

】如何在ios中实现刷新令牌【英文标题】:Howtoimplementrefreshtokeninios【发布时间】:2018-04-0610:29:31【问题描述】:只有一些api调用需要令牌。当401发生时,将进行刷新令牌调用。对于每次调用,令牌都会刷新。401发生时如何同步... 查看详情

如何在unity中实现拖尾效果

...会添加拖尾或者鼠标点击的特效,接下来就说说在unity中如何实现拖尾效果,首先unity中有个组件,叫TrailRenderer,在Component——>Effect——>TrailRenderer中添加,根据自己需要的效果设置自己需要的颜色,然后还有相... 查看详情

如何在 UITable 中实现 Instagram 评论的效果?

】如何在UITable中实现Instagram评论的效果?【英文标题】:howcaniaccomplishtheeffectofinstagramcommentsinaUITable?【发布时间】:2013-12-0523:57:06【问题描述】:当我们在cmets中滚动时,我想完成instagram的效果,它像这样隐藏键盘:我知道它不... 查看详情

如何在 MATLAB 中实现鱼眼镜头效果(桶形变换)?

】如何在MATLAB中实现鱼眼镜头效果(桶形变换)?【英文标题】:HowcanIimplementafisheyelenseffect(barreltransformation)inMATLAB?【发布时间】:2010-04-0703:37:57【问题描述】:如何实现该图像中所示的鱼眼镜头效果:大家可以试试谷歌的logo:... 查看详情

你如何在 C++ 中实现阶乘函数? [复制]

】你如何在C++中实现阶乘函数?[复制]【英文标题】:HowdoyouimplementthefactorialfunctioninC++?[duplicate]【发布时间】:2011-08-0823:19:27【问题描述】:可能的重复:CalculatinglargefactorialsinC++Howtocomputethefactorialofx如何在C++中实现阶乘函数?我... 查看详情

如何在android中实现图像视图的缩放效果?

】如何在android中实现图像视图的缩放效果?【英文标题】:Howtoimplementzoomeffectforimageviewinandroid?【发布时间】:2012-01-1400:26:57【问题描述】:我必须实现图像缩放,我尝试了很多代码。但我没有完全了解手势事件。我想在我们应... 查看详情

WinUI3如何在桌面应用中实现亚克力窗口效果?

】WinUI3如何在桌面应用中实现亚克力窗口效果?【英文标题】:HowtoimplementacrylicwindowseffectinWinUI3indesktopapplication?【发布时间】:2022-01-1020:39:39【问题描述】:在使用VS2022创建WinUI3(WindowsAppSDK1.0)项目时,我无法在Windows上实现亚克... 查看详情

如何在 iphone sdk 中实现面包屑导航? [关闭]

】如何在iphonesdk中实现面包屑导航?[关闭]【英文标题】:HowtoimplementBreadcrumbNavigationiniphonesdk?[closed]【发布时间】:2012-05-1006:35:03【问题描述】:我想在我的iOS应用程序中实现面包屑导航。这怎么可能?提前致谢。【问题讨论】... 查看详情

如何在unity3d中实现战争迷雾效果

参考技术AiTweeniTween.CameraFadeToiTween.CameraFadeFrom,或者用深度摄像机,改切换画面color.a 查看详情

你如何在 Alamofire 5 中实现 RequestAdapter?

】你如何在Alamofire5中实现RequestAdapter?【英文标题】:HowdoyouimplementaRequestAdapterinAlamofire5?【发布时间】:2019-01-1622:29:49【问题描述】:在Alamofire5Beta中,SessionManager已被Session取代。我想知道现在分配RequestAdapter的过程是什么,因... 查看详情

如何在 HereMaps 中实现多条路由?

】如何在HereMaps中实现多条路由?【英文标题】:HowCanIImplementMultipleRoutesinHereMaps?【发布时间】:2020-02-2405:51:19【问题描述】:如何使用iOSHereMapSDK实现多条路由。谁能提供多条路线的示例。【问题讨论】:你想要多少条路线?3条... 查看详情

如何在音乐播放器应用程序 ios / 中实现字母滚动条

】如何在音乐播放器应用程序ios/中实现字母滚动条【英文标题】:howtoimplementalphabeticscrollbarlikeinmusicplayerappios/【发布时间】:2015-06-2311:50:55【问题描述】:我需要像在音乐应用中那样实现字母滚动条。任何人都可以帮助我使用... 查看详情

如何在html中实现图片的滚动效果

<MARQUEEonmouseover=stop()onmouseout=start()scrollAmount=3loop=infinitedeplay="0"><IMGsrc="第一张图片地址"><IMGsrc="第二张图片地址"></MARQUEE>注释:1)scrollAmount。它表示速度,值越大速度越快。2)加入onmouseover= 查看详情