一行代碼讓你的TableView動起來-iOS動畫

2022-01-09 程式設計師技術

點擊上方「程式設計師共讀」,選擇「置頂公眾號」

關鍵時刻,第一時間送達!

正文

TableViewAnimationKit調用各個動畫的方法都為類方法,只需一行代碼就可以調用。

eg:

[TableViewAnimationKit shakeAnimationWithTableView:tableView];

TableViewAnimationKit提供的動畫類方法

+ (void)moveAnimationWithTableView:(UITableView *)tableView;

+ (void)alphaAnimationWithTableView:(UITableView *)tableView;

+ (void)fallAnimationWithTableView:(UITableView *)tableView;

+ (void)shakeAnimationWithTableView:(UITableView *)tableView;

+ (void)overTurnAnimationWithTableView:(UITableView *)tableView;

+ (void)toTopAnimationWithTableView:(UITableView *)tableView;

+ (void)springListAnimationWithTableView:(UITableView *)tableView;

+ (void)shrinkToTopAnimationWithTableView:(UITableView *)tableView;

+ (void)layDonwAnimationWithTableView:(UITableView *)tableView;

+ (void)roteAnimationWithTableView:(UITableView *)tableView;

先舉其中一個動畫效果為例子:

動畫效果為Cell左右各自插入。

實現代碼很簡單如下:

+ (void)shakeAnimationWithTableView:(UITableView *)tableView {

    

    NSArray *cells = tableView.visibleCells;

    for (int i = 0; i < cells.count; i++) {

        UITableViewCell *cell = [cells objectAtIndex:i];

        if (i%2 == 0) {

            cell.transform = CGAffineTransformMakeTranslation(-XS_SCREEN_WIDTH,0);

        }else {

            cell.transform = CGAffineTransformMakeTranslation(XS_SCREEN_WIDTH,0);

        }

        [UIView animateWithDuration:0.4 delay:i*0.03 usingSpringWithDamping:0.75 initialSpringVelocity:1/0.75 options:0 animations:^{

            cell.transform = CGAffineTransformIdentity;

        } completion:^(BOOL finished) {

            

        }];

    }

}

主要思路為:

獲得tableview的visibleCells數組,進行遍歷,對每個執行動畫,不同cell的執行時間、方向有所差異,一起構成整個動畫。

後語

源碼: https://github.com/alanwangmodify/TableViewAnimationKit

【點擊成為安卓大神】

相關焦點

  • 無需代碼,Hype可以把設計變成動畫,讓你的創意動起來
    以前,你需要掌握複雜的軟體才能製作HTML5動畫,現在無需代碼,Hype可以把設計變成動畫,像設計幻燈片一樣輕鬆,趕快讓你的創意動起來!你會從一個空白的「場景」開始,它可以是一個網頁、一章電子書,或是一個橫幅廣告。
  • 一行JAVA代碼如何運行起來?
    在程式設計師的世界中,你總會聽到一句「PHP是世界上最好的語言」的調侃。然而在你進入軟體程序開發之後,你會發現即使開發語言千千萬,最盛行的還是JAVA。不過JAVA語言的上手難度就比PHP、前端高很多了,所以今天我們給大家講解下一行JAVA代碼到底是如何運行起來的,JAVA後浪們可以以此為入門Java的基礎,開啟Java開發、人生贏家之路。Java是一種半解釋型語言,相對的有解釋型語言Python&PHP、編譯型語言C&C++。
  • iOS動手做一個直播(代碼篇)
    目前為止直播還是比較熱點的技術的,簡書,git上有幾篇閱讀量和含金量都不錯的文章,但是別人的終究是別人的,有些時候哪怕是照著寫一遍,也會有自己的進步,特別是你根據自己的想法和思路,在學習代碼的基礎上以自己的方式創建它
  • iOS性能調優之--tableView優化
    正確的方法是,先有質量地實現你的需求,寫夠測試用例,然後做profile去找到性能的瓶頸,考慮究竟哪些地方應該優化,應該如何優化,哪些不應該優化.在獲取數據後臺數據的時候,把cell高度計算出來,緩存起來:homeModel.contentHeight  = self.calculateTextHeight(text: homeModel.contentTextString!) + 150if(homeModel.retwitterType?.count)!
  • 在一行中就可以完成的7個CSS代碼技巧!
    ,從而可以幫助你提升工作效率,實現更快地加載網站頁面。同樣的功能,最後結果都是一樣的,一行就可以實現的,千萬不要寫多行,有人可能會說,一行書寫不易讀,但請想一下!如果一行就可以完成的效果,而你必須將所有內容都寫成多行,那會使 CSS 文件太長且更難以閱讀,不是嗎?以下是多個網頁中最常用的 CSS 代碼,可以快速減少到 一 行,其效果也一樣。
  • 初探Contacts框架:為何iOS 9會棄用AddressBook?
    注意,上面的方法是可能返回異常的,所以必須將代碼try起來,在do-catch語句中調用。catch語句塊會捕獲拋出的異常。事實上也就只有兩行代碼:一行用來調用上面剛剛聲明的委託方法。另一行用來讓視圖控制器從導航控制器棧中出棧。
  • 一行 CSS 代碼的魅力
    之前在知乎看到一個很有意思的討論 一行代碼可以做什麼?[1]那麼,一行 CSS 代碼又能不能搞點事情呢?CSS Battle首先,這讓我想到了,年初的時候沉迷的一個網站 CSS Battle[2] 。當然,CSS Battle 裡面還有更多更複雜的挑戰,也有很多能夠通過一行代碼實現的,感興趣的嘗試下。一行背景代碼要說到 CSS 最有意思的屬性,我覺得背景(background)肯定能夠獲得很多選票。
  • 坑爹代碼 | 你寫過的最長的一行代碼有多長???
    你寫過的最長的一行代碼有多長嗎?你為什麼要寫這麼長?是看著帥呢,還是想減少代碼行數?purchaseInfo.getExteriorOperation().getExteriorPart().getTeamwork().equals(sheet.getTeamwork()))).collect(Collectors.toList());上面這段代碼雖然被拆開多行顯示,但本質上是一行,一個極其複雜的賦值語句!
  • 一行代碼實現Excel動態圖表效果,簡單又實用的動態圖表製作
    Hi,大家好,本專欄將會從零開始和大家用圖文的方式,讓你從零基礎學會VBA!有興趣的小夥伴可以持續關注我,或者在專欄進行查看學習,願與君攜手共進!最近有很多小夥伴說在Excel裡面的動態圖表是怎麼做的?能不能用一句代碼來實現這個?
  • 理性分析:iOS 12代碼顯示新iPhone支持雙卡,那麼蘋果會使用嗎?
    百家號獨家內容蘋果在推送iOS 12測試版本的時候,意外的爆料了接下來要發布的新品代碼,目前ios12隻是測試版本而已,建議大家不要輕易嘗試,不過每年新iPhone或者其他的設備很多都是從新版本的代碼之中暴露出來的,因為蘋果必須做適配,否則的話
  • iOS開發 精簡TableView
    下面會提供保持tableView代碼整潔和結構清晰的方法。UITableViewController vs. UIViewControllerTableViewController的特性table view controllers可以讀取table view的數據、設置tabvleView的編輯模式、反應鍵盤通知等等。
  • 微信暱稱怎樣設置改成空白 蘋果iOS微信空白暱稱代碼複製方法
    透明暱稱設置方法  透明暱稱需要用到特殊的代碼, 這裡已經給大家準備好了最新的安卓和 ios 各自的空白代碼,ios的小夥伴不用再在安卓上設置了。  首先獲取這個空白代碼  獲取到代碼以後  長按複製對應系統的代碼  ios系統長按複製 「蘋果空白暱稱」  安卓系統長按複製 「安卓空白暱稱」  然後在微信個人信息界面點擊暱稱
  • TimLiu總結的iOS、mac開源項目及庫 — Edit
    apps-ios-wikipedia - apps-ios-wikipedia 客戶端。jetstream-ios - 一款 Uber 的 MVC 框架。它同時提供了多用戶實時通訊支持,一旦啟動 JetStream 後端服務,通過 WebSocket 協議可以分分鐘建立多用戶實時通訊應用。
  • 一行代碼能實現什麼奇葩功能?
    如果只允許你寫一行代碼
  • 蘋果iOS 14代碼曝光新款頭戴式耳機
    近日,根據外媒9to5mac的爆料,蘋果疑似推出新款頭戴式耳機,而這一消息源竟來自蘋果ios 14代碼中的兩個產品圖標。圖源網絡,侵刪據了解,不同於AirPods系列藍牙耳機,9to5Mac在ios 14代碼中發現,蘋果展示的兩個圖標皆為頭戴式耳機形狀,並且配有白色以及黑色兩種款式,因此蘋果極有可能推出高端頭戴式耳機。
  • 動效落地可能最好的幾個方案,分享給你!
    前言 相信打開這篇文章的你,多多少少都接觸過動效設計,但不知落地方案你知多少,本期就分享幾個業內設計大佬們常用,但還捨不得告訴人,超級好用的落地方案!對於一些需要輸出GIF格式的動圖,有幾個技巧能助你輸出更高質量的畫質,首先在能接受動圖大小的前提下,儘可能的調大幀速率,這樣導出的動畫更細膩柔和。當在AE設計好的動畫後一般是導出視頻或序列幀,再用PS導出GIF圖,這裡推薦導出序列幀再用ps導出GIF圖的方案,這樣動圖相對質量更高內存也更小一些。
  • 解決tableView長截圖顯示不全問題
    代碼:獲取tableView內容截圖,直接調用即可。func getTableViewScreenshot(tableView: UITableView,whereView: UIView) -> UIImage?
  • [Swift基礎] 麥子學院iOS開發視頻教程從入門到精通
    高清視頻,讓每一行代碼都清晰可見,方便大家學習。‍第一階段:語言基礎和iOS入門1、秒學Swift開發語言,坐標系計算機語言學法2、初始Objective-C3、iOS8 App開發快速入門4、iOS開發語言 swift 2.2基礎第二階段:玩轉界面1、swift2.0-iOS玩轉UIKit2、IOS動畫編程3、IOS多點觸控與手勢識別
  • 讓你的照片局部動起來的秘密!
    ,我將圖層名改成了【靜止】▼導入第二個視頻我們用同樣的途徑導入第二個視頻,但是按確定之前,要選擇【僅限所選範圍】,然後在小北標出的 ② 的地方截取一段想要循環的一個動作的一個來回,並在【製作幀動畫】處打鉤~導入第二個視頻後,我們會看到幾十個圖層,想要看到它動起來的話,點擊菜單欄【窗口】【時間軸】就可以在下方看到幀動畫了,點擊【播放按鈕】,同志們就能看到它動起來了
  • 一行Python代碼能實現什麼奇葩功能?
    來,我們來鞏固下,我們用一行代碼列印出來。(左右滑動查看所有代碼)print('\n'.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))