所在的位置: swift >> swift介绍 >> SwiftUI动画进阶Part4T

SwiftUI动画进阶Part4T

白癜风哪里好 http://baidianfeng.39.net/a_yufang/160805/4925640.html

????答复“进群”拉你进社区换取群????

绪论

前三篇高等SwiftUI动画系列是做家在WWDC以前实战归纳的实质。对年WWDC先容的TimelineView和Canvas觉得打动。这开启了一个崭新的大概性,笔者将试图在这一部份和下一部份的系列中阐释这些大概性。

在这篇文章中,咱们将详细地谋求TimelineView。咱们将从最罕见的用处迟钝发端。但是笔者觉得,最大的大概性来自于TimelineView和咱们已知现有的动画相连接。在其余事物中,经过一点创意,如斯的组合将让咱们最后实行“关键帧近似”的动画。

在第5部份,咱们将谋求Canvas视图,以及它和咱们的新诤友TimelineView相连接是如斯的优异。

上文中展现的动画,是行使本文中先容的技巧建立的。该动画的完备代码可在此gist中找到。

TimelineView的组件

TimelineView是一个容器视图,它以干系安排程序断定的频次从新评价其实质:

TimelineView(.periodic(from:.now,by:0.5)){timelineinViewToEvaluatePeriodically()}

TimelineView接受安排程序做为参数。稍后咱们将详细了解它们,此刻,上述示例行使每半秒触发一次的安排程序。

另一个参数是一个实质闭包,它接受一个看起来像如斯的TimelineView.Context参数:

structContext{letcadence:Cadenceletdate:DateenumCadence:Comparable{caselivecasesecondscaseminutes}}

Cadence是一个列举表率,咱们能够行使它来决意在咱们的视图中显示甚么。大概的值是:live、seconds和minutes。以此为提醒,防止显示与Cadence无关的消息。典范的例子,是防止在具备秒或分钟节拍的安排程序的时钟上显示毫秒。

请注视,Cadence不是你能够更正的东西,而是响应配置状况的东西。文档仅供给了一个例子。在watchOS上,升高手腕时Cadence会放慢。假如你觉察了Cadence产生变动的其余环境,笔者特别想懂得。请不才方发布议论。

好吧,这全部看起来都很棒,但是咱们应当注视很多奥秘之处。让咱们发端建设咱们的第一个TimelineView动画,看看它们是甚么。

了解TimelineView何如做事

窥察底下的代码。咱们有两个随机变动的神情标志。两者之间的独一差别是,一个写在实质闭包中,而另一个被放在独自的视图中以升高可读性。

structManyFaces:View{staticletemoji=["??","??","??","??","??","??","??","??","??","??","??","??","??"]varbody:someView{TimelineView(.periodic(from:.now,by:0.2)){timelineinHStack(spacing:){letrandomEmoji=ManyFaces.emoji.randomElement()??""Text(randomEmoji).font(.largeTitle).scaleEffect(4.0)SubView()}}}structSubView:View{varbody:someView{letrandomEmoji=ManyFaces.emoji.randomElement()??""Text(randomEmoji).font(.largeTitle).scaleEffect(4.0)}}}

此刻,让咱们看下运转代码会产生甚么:

惊了?为甚么左侧的emoji会变,而另一个老是悲戚?究竟表明,SubView没有接受就任何变动的参数,这象征着它没有依赖相干。SwiftUI没有来由从新谋划视图的主体。年WWDC的一个出色演讲是DemystifySwiftUI。它声明了视图标记、性命周期和依赖相干。通盘这些主旨关于了解工夫线何故如斯运转都特别要紧。

为了管理这个题目,咱们更正了SubView视图以增加一个参数,该参数将跟着工夫轴的屡屡革新而转变。请注视,咱们不须要行使参数,它只要要在哪里。虽然如斯,咱们将看到这个未行使的值稍后会特别有效。

structSubView:View{letdate:Date//justbydeclaringit,theviewwillnowbere


转载请注明:http://www.aierlanlan.com/rzfs/1011.html

  • 上一篇文章:
  •   
  • 下一篇文章: