一个更Swifty核心动画
去年Apple的新操作系統版本中沒有很多新的框架和API。相反,重點顯然在于引擎蓋下的改進和性能提升,就像WWDC主題演講中提到的那樣。Apple已經取得了一些非常好的改進的另一個領域是他們的一些低級框架如何導入Swift - 特殊性Core Animation。
核心動畫可以說是Apple平臺上最重要的框架之一,因為它為所有設備的UI提供了很大的支持。在我的演講*“超越動畫與核心動畫”中*,我展示了Core Animation?不僅是一個動畫框架 - 它還是一個功能強大的通用渲染工具,可以通過多種不同的方式在應用程序中創建自定義圖形。
在今天的WWDC更新中,讓我們來看看今年的Core Animation如何變得更加*“Swifty”*,這要歸功于一些更好的注釋以及之前依賴于字符串的API現在使用了多少綜合枚舉和選項集。
形狀
繪制程序化形狀可以是一種很好的方法,可以刪除依賴于分辨率的資源,并使應用程序中的內容更具動態性。用于繪制自定義形狀的API逐年變得更好,更好用于Swift,今年所有的字符串常量都變成了正確的類型。例如,現在我們可以使用點語法以類型安全的方式將圓邊添加到一行:
let line = CAShapeLayer() line.lineCap = .round 復制代碼對于更復雜的形狀,我們現在還可以使用點語法來描述使用顏色填充重疊形狀時的自定義填充模式:
let shape = CAShapeLayer() shape.fillRule = .evenOdd 復制代碼之前,上述兩個屬性都使用字符串,導致更難的API可發現性和更少的類型安全性。
我將CAShapeLayer在我的“核心動畫寶石”系列的即將上市的條目中詳細介紹它可以用于的所有細節。
動畫
更重要的是,對Core Animation的實際動畫API進行了更改,其中有許多變體CAAnimation。許多開發人員認為這種類型的動畫比UIKit的內置動畫API更難以使用,即使它們提供了更多的功能和控制,但他們在Swift中并沒有真正感受到“在家” - 直到現在。
就像Core Animation的其他部分現在已經為Swift完全注釋一樣,動畫現在使用強類型選項,既可以用于動畫填充圖層屬性的方式,也可以用于引用計時功能:
let animation = CABasicAnimation(keyPath: #keyPath(CALayer.transform)) animation.fillMode = .forwards animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) 復制代碼使用#keyPath編譯器命令,我們甚至可以獲取動畫API的最終字符串類型部分 - 我們想要設置動畫的關鍵路徑 - 并將其轉換為類型安全。看看這個完整的例子,我們正在創建一個用于旋轉圖層的定制定時動畫,很難說我們實際上是在使用舊的基于Objective-C和C的API:
let animation = CABasicAnimation(keyPath: #keyPath(CALayer.transform)) animation.fillMode = .forwards animation.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut) animation.duration = 5 animation.fromValue = layer.transform animation.toValue = CATransform3DMakeRotation(.pi, 0, 0, 1) layer.add(animation, forKey: "rotate") 復制代碼在Core Animation的其他類型和類中也可以找到適用于CAShapeLayer和CAAnimation朋友的相同類型的調整和改進。例如,CATextLayer現在使用枚舉進行對齊和截斷屬性,CAConstraint現在使用can 定義圖層約束也可以以類型安全的方式完成。
結論
在Swift中使用Core Animations時添加這些修改可能看起來微不足道并且一開始并不重要,但它確實有幫助 - 無論是在保持我們的源代碼優秀,安全和干凈方面,還在使Core Animation這樣的框架更易于訪問到新一代Swift開發人員。
我很高興Apple回過頭來注釋這些基于Objective-C和C的API,而不是將它們扔掉并“從頭開始”重寫它們。核心動畫是一個非常強大和靈活的工具,使它看起來不像一個低級無法訪問的框架,更像是一個易于使用的所有Swift開發人員,我認為是一個巨大的勝利。
小編這里有大量的書籍和面試資料哦(點擊下載)
原文地址
轉載于:https://juejin.im/post/5d3c099d51882541175c158e
總結
以上是生活随笔為你收集整理的一个更Swifty核心动画的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据库】数据库安全性
- 下一篇: [dataTables使用的坑]data