[iOS] 重載Table View使用動畫
資料多的時候我們會使用Table View,時常需要更新資料再來顯示,有時候一次只需要更新一則資料,此時我們也能指定特定資料來更新,若想讓使用者體驗好的話,還可以輕易地使用動畫呢!
資料多的時候我們會使用Table View,時常需要更新資料再來顯示,有時候一次只需要更新一則資料,此時我們也能指定特定資料來更新,若想讓使用者體驗好的話,還可以輕易地使用動畫呢!
曾經使用過許多款跟公車有關的App,直到使用城市公車App讓我眼睛為之一亮,不是因為它功能有多華麗好用,而是因為它介面設計的讓人愛不釋手!所以也才讓我想要紀錄分享,對於使用者而言,第一印象會是想要繼續使用與否的關鍵,它總會讓我想多看一眼呢~
功能主要分這三個:
我想會使用公車App的人主要就這三個需求吧!在路上打開馬上就能找到功能。
我一直覺得最令人欽佩的人是把事情從複雜變簡單,將專業領域的知識術語用非常「親民」的話描述出來,讓普遍大眾都能「啊哈」這樣驚訝地理解!
在電腦資訊領域,使用者體驗與使用者介面 (UX and UI)時常讓人分不清楚,特別是在智慧手機與平板電腦出現後,設計師或任何人越來越重視UX和UI,因為可以與這些裝置有更多的「互動」,進而讓生活更加豐富與美好。
上週日特地去搭免費的松山線,最後搭到松山站,才發現原來饒河夜市在這裡!逛完一圈吃了五色剉冰。捷運年年更新,去年是信義線,今年是松山線,明年會是哪一條線呢?實在令人期待呢~🤗
接下來的一年2015年台北捷運圖設計的相當不錯,除了原本就有的顏色區別,還特別標記1-5號線!
在Scroll View上翻頁(Paging)似乎只能根據Scroll View這個元件的大小來決定,然而今日我有需求來改變其翻頁的大小,該如何做呢?
有神人這麼建議⋯⋯
clipsToBoundsUIView over the scrollview, wherever you want the user to be able to touchpanGestureRecognizer to that view
[touchableView addGestureRecognizer:_scrollView.panGestureRecognizer];
如果只是縮小Scroll View,且讓其上的元件不被切掉(第一點),那麼觸控範圍只有在被縮小Scroll View上頭,這樣不太合理,那麼我們就希望讓兩邊空白處也能觸控Scroll View。神人建議可以將panGestureRecognizer轉移共用,在Scroll View底下鋪View,將Scroll View的panGestureRecognizer設定到View上頭,這樣就大功告成!
神人說這麼做,Apple是允許的,在WWDC的Session (WWDC Session 223, “Enhancing User Experience with Scroll Views)上有提到,Scroll View有兩個gesture recognizer,就是因為大家的期望而設計出來的,如此就能在非該Scroll View上的元件來移動和縮放該Scroll View囉~
// Use these accessors to configure the scroll view’s built-in gesture recognizers.
// Do not change the gestures’ delegates or override the getters for these properties.
@property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer NS_AVAILABLE_IOS(5_0);
// `pinchGestureRecognizer` will return nil when zooming is disabled.
@property(nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer NS_AVAILABLE_IOS(5_0);
麥當當已經在我們生活中揮之不去,恰好今天中午同事吃飽飯,個子小的他居然說還想吃麥當當,我就陪他走去⋯⋯恰好今天看到一則文章,裡頭有所謂的麥當勞曲線,碰巧最近是麥當勞全天優惠,想起我的使命就是順便拍照記錄,促使我寫下這一篇~
很多時候在APP顯示的影像是來自網路,這時候我們會想到,若沒有網路時還想顯示影像該怎麼辦?解決方法當然就是在有網路的時候,把目標影像給儲存到手機端,下次顯示時直接取用。
然而此時出現另一個問題,就是從手機端顯示影像,居然會讓體驗變得頓頓的卡卡的,感覺十分不舒服⋯⋯解決辦法就是把影像快取起來,下次顯示時直接拿來用。
之所以頓頓卡卡是因為讀取自「硬碟」,網路下載會先儲存在「記憶體」,前者是在主程序讀取影像,因來源是硬碟,所以不僅耗時較久,連帶又會卡UI;後者在非主程序下載,當下載完才會切換到主程序顯示,來源又是在記憶體,讀取速度較快,因此就不會卡卡頓頓的。
於是我們就發展出三層級顯示影像 (Three-Level Display Image),也就是從網路(伺服器)下載影像到手機端(硬碟),再將影像快取(記憶體)起來顯示!
上一篇影像快取 (Image Cache)我的用法是,從網路下載影像,接著快取起來顯示,跳過儲存到手機端這個步驟,在此我用簡單的if-else說明如何實作!
時常需要從網路上抓取影像載入APP裡頭,尤其是在TableView的cell頻繁消失又出現的狀況,會不停地重複同樣(下載與顯示)的動作,這樣子做不是不行,然而使用者體驗會有點差,儘管已經用多執行緒去抓圖和載圖,操作上還算相當順暢,然而使用者還是會看到影像怎麼這時候消失變出現,接著又滾回去又從消失變出現,使用者體驗實在相當糟糕⋯⋯
於是想當然爾,我們會想要把已經載入的圖給暫存起來,下次要顯示時直接抓暫存在記憶體中的影像快取 (Image Cache)即可!
(繼續閱讀…)
Written
on 2014 年 11 月 21 日