前言
說來慚愧擎颖,iOS 8 都已經(jīng)發(fā)布半年多了蜀肘,而我最近才開始學(xué)習(xí)iOS 7的一些新特性,才開始去理解 iOS 7 所帶來的一些界面交互的變化磺箕。
一切的源起還是來自 Facebook 在去年發(fā)布的社交奖慌、新聞聚合閱讀應(yīng)用Facebook Paper,當(dāng)然我們在這里討論的不是該應(yīng)用是否達(dá)到了當(dāng)初Facebook發(fā)布它時所定的目標(biāo)松靡,而是在于它那出色的交互設(shè)計(jì)简僧,并從中學(xué)習(xí)到點(diǎn)東西。至于如何出色請見它的宣傳視頻雕欺,同時可以強(qiáng)烈推薦移步到美區(qū) App Store 的 Paper 頁面下載一個把玩下岛马。(什么?沒有美區(qū)賬號阅茶!那就多看幾遍的宣傳視頻吧V朊丁)讓我們來扒扒這一應(yīng)用后面的團(tuán)隊(duì),該應(yīng)用的UI設(shè)計(jì)師是 Mike Matas脸哀,聽到這個名字不要害怕蹦浦,更不要緊張,因?yàn)槲腋阋粯訉λ粺o所知撞蜂,抱著好奇的心態(tài)接著往下扒吧盲镶。他是這樣的一個人:
15 歲高中輟學(xué),加入了 The Omni Group蝌诡。18 歲創(chuàng)立自己的第一個公司 Delicious Monster溉贿。2005 年 WWDC 設(shè)計(jì)作品 Delicious Library 摘得了最佳 Mac OS X 用戶體驗(yàn)第一名和最佳 Mac OS X 產(chǎn)品第二名。19 歲加入蘋果公司浦旱,設(shè)計(jì)了 iPhone 上的 Settings.app, Photos.app, Camera.app, Maps.app 以及電池圖標(biāo)宇色,還有 Mac 上的 Photo Booth 和 Time Machine。2011年夏天創(chuàng)辦他聯(lián)合創(chuàng)辦的 Push Pop Press 被 Facebook 收購了。
然后宣蠕,我們在來看看他創(chuàng)辦的Push Pop Press做了哪些事例隆?他跟美國前總統(tǒng)、2007年諾貝爾和平獎主阿爾·戈?duì)?/a>合作一起開發(fā)了 Our Choice 這個號稱“下一代電子書的典范”的環(huán)保類電子書App抢蚀。Our Choice 有超過400張可互動的圖和表镀层,每一張?jiān)谖淖种械母綀D都能利用手指放大,有一些圖表還可以用手指碰觸其中的圖案或橫條皿曲,然后圖中就會顯示更詳細(xì)的內(nèi)容或解說唱逢。溢美之話不多說,照例放個Vimeo上的宣傳視頻給大家看看屋休,還有這篇《劃時代的愛地球電子書--戈?duì)柕腛ur Choice》坞古。如果你因?yàn)闆]有美區(qū) App Store 賬號而下載不到 Paper 的話,那恭喜你博投,你可以在中國區(qū)的App Store下載到 Our Choice绸贡,RMB 30。如果你還沒有被我的啰嗦所打敗毅哗,或者你已經(jīng)對我啰嗦的話語感到深惡痛絕听怕,那你可以出門左拐到優(yōu)酷看看在 Mike Matas 在 TED 上的《下一代的電子書》演講。
說了這么多廢話之后虑绵,終于可以再回到正題了尿瞭!如果你體驗(yàn)完了Our Choice 和 Paper 這兩款 App后,你會發(fā)現(xiàn)他們的交互和動畫幾乎如出一轍翅睛。對声搁,他們都是 Kimon Tsinteris 開發(fā)的。那么問題又來了捕发,Kimon Tsinteris 這個又是誰呢疏旨?他是Push Pop Press 的聯(lián)合創(chuàng)始人,曾在蘋果擔(dān)任高級工程師扎酷,并參與了 iPhone 和iPad 上的軟件研發(fā)(iPhone的指南針及地圖)檐涝。2011年,F(xiàn)acebook收購了他的公司法挨,此后他便和 Mike Matas 加入了Facebook負(fù)責(zé)Facebook iOS版本的開發(fā)谁榜。Mike Matas 和 Kimon Tsinteris 他們都有一個共同的特點(diǎn),那就是不滿足于蘋果自身動畫框架的單調(diào)凡纳,他們認(rèn)為:
隨著觸屏設(shè)備的不斷發(fā)展窃植,用戶需要更加逼真的動畫形式。對于用戶來說荐糜,如果觸摸屏上的元素可以對其觸摸動作作出反饋巷怜,那么它也應(yīng)該對其觸摸的速率作出反饋葛超。這也將是移動設(shè)備上動畫效果接下來的發(fā)展趨勢。
他們創(chuàng)辦的Push Pop Press 就一直致力于創(chuàng)造一個逼真的延塑、充滿物理效應(yīng)的體驗(yàn)巩掺,伴隨著被Facebook收購后,他們這一理念也就自然而然的帶到了他們所負(fù)責(zé)的產(chǎn)品身上页畦,Paper 就是這樣的一個產(chǎn)物。故事到此當(dāng)然還沒有結(jié)束研儒,他們發(fā)布完P(guān)aper 之后豫缨,更進(jìn)一步將其背后的動畫引擎POP開源了!它目前在Github上有著10250個Star端朵。借助于POP這個動畫引擎好芭,iOS 開發(fā)者將至少有6類動畫效果可以使用了,如果再把自定義功能加進(jìn)去冲呢,那么在眾多開發(fā)者的努力下人機(jī)交互動畫將產(chǎn)生無限多的可能舍败。而這正是Pop引擎背后的工程師所愿意看到的。讓我們來看看 Kimon Tsinteris 本人對這個開源庫的介紹:
今天我們開源了實(shí)現(xiàn)Paper應(yīng)用平滑動畫和轉(zhuǎn)場效果的動畫引擎Pop敬拓。使用動態(tài)動畫(dynamic animations)而不是傳統(tǒng)的靜態(tài)動畫(static animations)邻薯,Pop使常見的滑動(scrolling)、彈跳(bouncing)乘凸、折疊(unfolding)等效果充滿了活力厕诡,也使 Paper給人一種耳目一新的感覺。
手勢交互的革新迎來了新的一輪軟件設(shè)計(jì)的浪潮营勤。人們可以用手指直接操作屏幕上的元素灵嫌,(而不像以前,需要一支筆)葛作,這就降低了交互的間接性(反著說寿羞,就是交互更直接),于是赂蠢,人們又提出更進(jìn)一步的要求:既然觸屏可以得到處理绪穆,那么不同速度的滑屏操作也應(yīng)該得到處理。
當(dāng)我在2010年聯(lián)合創(chuàng)辦Push Pop Press公司的時候客年,我們的目標(biāo)就是要創(chuàng)造一種可行的霞幅、基于物理效果(physics-everywhere)的體驗(yàn)。我們在尋求一種可以使人們非常愉悅量瓜、輕松的使用整個應(yīng)用的解決方案司恳,就像我們使用UIScrollView那樣的順滑。
所以從上面的這些我們可以看到绍傲,他們倡導(dǎo)的是隨著觸屏設(shè)備的不斷發(fā)展扔傅,在我們的項(xiàng)目中應(yīng)該充分的利用觸屏設(shè)備的手勢交互功能耍共,App應(yīng)該對用戶的手勢做一些相應(yīng)地反應(yīng),這些反應(yīng)可以包括滑動的速度猎塞、滑動的方向试读、重力感應(yīng)、用戶晃動手機(jī)的方向等等荠耽,通過這些反應(yīng)來提供給用戶一種愉悅钩骇、輕松的體驗(yàn)。
在 iOS 7 之前铝量,我們看到的大量的App都是通過iOS系統(tǒng)提供的Core Animation framework所支持的傳統(tǒng)的靜態(tài)動畫來實(shí)現(xiàn)一些簡單的線性動畫(linear)倘屹、淡入效果(ease-in)和淡出效果(ease-out)。
iOS系統(tǒng)支持提供的基礎(chǔ)的靜態(tài)動畫
常規(guī)的App界面操作大體是這樣的:用戶點(diǎn)擊界面上的按鈕慢叨,界面通過利用上述的靜態(tài)動畫做出相應(yīng)的反應(yīng)纽匙,比如最常見的 NavigationController中界面切換的“左進(jìn)右出”動畫、模態(tài)視圖的“下進(jìn)下出”動畫拍谐。這些靜態(tài)動畫大部分沒有利用到觸屏設(shè)備的手勢交互功能烛缔。那些不滿足現(xiàn)狀的開發(fā)者們想做出精彩的動態(tài)動畫效果大都花了九牛二虎之力,印象最深的就是看到一些應(yīng)用將模態(tài)視圖的“下進(jìn)下出”動畫硬生生的改成的了NavigationController的“左進(jìn)右出”展示動畫轩拨,然后就經(jīng)常遇到視圖控制器混亂的問題践瓷,這樣的代碼也不利于維護(hù)和修改。當(dāng)然在iOS 7之前蘋果引入了一些方法和類來解決一些問題气嫁,如UIPageViewController類当窗、UICollectionViewController 類,以及addChildViewController:寸宵、removeFromParentViewController崖面、 transitionFromViewController:toViewController: duration:options:animations: completion:等方法。但是梯影,這些還是類的使用還是有著很大的局限性巫员。尤其是addChildViewController:、 removeFromParentViewController甲棍、 transitionFromViewController:toViewController: duration:options:animations: completion: 這幾個方法的重用性幾乎為0简识。
一切的轉(zhuǎn)變發(fā)生在 iOS 7,iOS 7最大的變化就是從 iOS 6 的擬物化換成扁平化感猛。同時七扰,加入了大量的動態(tài)效果。這里貼幾張圖來看看:圖一是在墻紙選取界面多了一個動態(tài)墻紙選項(xiàng)陪白,如果你選擇了動態(tài)墻紙颈走,在主頁面當(dāng)你左右晃動手機(jī)時,墻紙也會跟著動咱士。圖二是在應(yīng)用中立由,你現(xiàn)在可以通過右滑手勢返回到上一級界面轧钓,隨著你的滑動,界面會跟著移動锐膜。圖三是Messages的彈簧效果毕箍。從這些我們可以直觀的看到,從iOS 7開始道盏,蘋果也開始鼓勵使用動態(tài)動畫而柑。
圖一:動態(tài)墻紙?jiān)O(shè)置
圖二:右滑返回上一級界面
圖三:消息應(yīng)用
既然有直觀的,那肯定就會用戶不直觀的東西荷逞。那就是 iOS 7 的SDK(Software Development Kit牺堰,軟件開發(fā)工具包)。
通過 iOS 7 的SDK(真的是罪過颅围,現(xiàn)在都已經(jīng)是iOS 8了,我還在研究iOS 7)我們可以看到這幾個東西:
1恨搓、UIKit Dynamics (UIKit動力學(xué))
UIKit Dynamics是UIKit中一套完整的物理引擎院促。它可以讓我們在程序中對界面元素添加一些行為從而達(dá)到諸如重力、彈簧等現(xiàn)實(shí)中的動作行為斧抱。你只需在引擎中注冊界面元素常拓,并指定好物理行為,其他的事就交給物理引擎去完成了辉浦。
2弄抬、Motion Effects
Motion Effects 可以創(chuàng)建很酷的視差效果,就像我們上面提到的首屏動態(tài)壁紙宪郊。它基于Apple提供的重力加速器提供的數(shù)據(jù)計(jì)算分析掂恕,使我們的界面元素根據(jù)移動設(shè)備的傾斜方向做出相應(yīng)的反應(yīng)。
3弛槐、Custom View Controller Transitions(自定義視圖控制器轉(zhuǎn)場)
它是給出了一套完整的自定義View Controller之間切換效果的方案懊亡,你可以通過它簡單、方便的自定義各種界面切換效果乎串〉暝妫可以輕松的就改變NavigationController中界面切換的“左進(jìn)右出”動畫和模態(tài)視圖的“下進(jìn)下出”動畫。
這就是iOS 7上關(guān)于交互的重大改變叹誉,現(xiàn)在你可以通過有效的利用這些特性開發(fā)出獨(dú)一無二的動畫鸯两,玩出各種各樣的特效,也讓人機(jī)交互動畫產(chǎn)生無限多的可能长豁。
本文的目的不是介紹和講解這些新特性钧唐,所以在此不做任何介紹。
正文
盡管 iOS 7 帶來了如此偉大的特性(請?jiān)试S我用“偉大”來形容)蕉斜,但是遺憾是逾柿,在日常常用的App中你并不容易看到這些變化缀棍,大部分應(yīng)用還是采用著老式的靜態(tài)動畫,即使iOS 8都已經(jīng)推出了大半年机错,即使在網(wǎng)絡(luò)上可以輕松的找到這些新特性的教程爬范,即使你可以看到國外大量的采用這些新特性的應(yīng)用并帶來了全新的交互體驗(yàn)。弱匪。青瀑。。萧诫。斥难。
我覺得可能有以下幾個原因:
1、國內(nèi)很多常用的應(yīng)用都還支持著iOS 6帘饶,甚至是iOS 5哑诊,所以導(dǎo)致他們沒有辦法很快的用上最新的特性;
2及刻、很多公司覺得沒必要在市場反響很好镀裤、有著大量用戶的產(chǎn)品上做這些實(shí)驗(yàn)設(shè)計(jì),即使他們做這些設(shè)計(jì)易如反掌缴饭;
3暑劝、設(shè)計(jì)師、產(chǎn)品經(jīng)理颗搂、工程師對于系統(tǒng)的一些新特性沒有及時的了解担猛、學(xué)習(xí)跟交流,所以會出現(xiàn)不知道系統(tǒng)可以實(shí)現(xiàn)這些效果丢氢,即使是知道了這些特性傅联,但是如何應(yīng)用,如何設(shè)計(jì)動畫又是個頭疼的問題疚察。
對于第2點(diǎn)顯然我們沒有什么能夠做的纺且,但對于第1點(diǎn)跟第3點(diǎn)我覺得我們還是可以做點(diǎn)力所能及的事的。
首先稍浆,對于第1點(diǎn)就是多鼓勵身邊的人將他們的手機(jī)系統(tǒng)升級到最新的系統(tǒng)载碌,這不僅僅是為了能讓開發(fā)者可以更加放心地、更加容易地開發(fā)出優(yōu)秀的App, 同時衅枫,由于系統(tǒng)的更新往往伴隨著舊系統(tǒng)一些bug嫁艇、漏洞的修復(fù),所以也可以讓用戶更加安全弦撩、放心的使用手機(jī)步咪,畢竟手機(jī)現(xiàn)在在我們?nèi)粘I钪械玫匚皇侨绱说闹匾?br>
其次,對于第二點(diǎn)益楼,就是我們今天的重點(diǎn)了(現(xiàn)在才到重點(diǎn)猾漫!你應(yīng)該有種把我殺了的沖動吧5闱纭)。由于最近在負(fù)責(zé)一個新項(xiàng)目悯周,在交互粒督、動畫的效果和實(shí)現(xiàn)上嘗試了很多,看了很多Github上的開源庫禽翼,雖然還不能簡單屠橄、輕松的理解和實(shí)現(xiàn)那些效果,但還是覺得收獲滿滿闰挡。古人云“獨(dú)樂樂锐墙,不如眾樂樂”,所以在此把看到的覺得不錯的、有意思的效果列出來供大家學(xué)習(xí)參考,由于本文不是技術(shù)文章证膨,所以只看效果、只給Github鏈接地址刻盐,不討論具體實(shí)現(xiàn)方式等等。
1劳翰、轉(zhuǎn)場動畫
VCTransitionsLibrary
AnimatedTransitionGallery
ZFDragableModalTransition
GTAppMenuController
ICGTransitionAnimation
CBHazeTransitionViewController
CSStickyHeaderFlowLayout
PinterestAnimator
2、輸入框
RPFloatingPlaceholders
JVFloatLabeledTextField
LTBouncyPlaceholder
3馒疹、加載動畫
PWProgressView
UAProgressView
RJImageLoader
PQFCustomLoaders
4佳簸、下拉動畫
UzysAnimatedGifPullToRefresh
Pull-to-Refresh.Rentals-iOS
CBStoreHouseRefreshControl
5、UITableCell
SWTableViewCell
MGSwipeTableCell
6颖变、視圖展示
MGSpotyViewController
RKCardView
HAPaperViewController
AMLoginViewController(背景模糊生均、加視頻)
VideoCover-iOS-Demo(背景加視頻)
DVOBouncer
UIView-Shake
AMWaveTransition
URBMediaFocusViewController
TwitterBirdAnimation 和 CBZSplashView 效果一樣
RKNotificationHub
SOZOChromoplast
VVBlurPresentation
TinderSimpleSwipeCards
ZLSwipeableView
RGCardViewLayout
AFBlurSegue
BRFlabbyTable
VPRubberMenu
YFCardTransitions
TGLStackedViewController
CXCardView
7、UILabel
LazyFadeInView
RQShineLabel
8腥刹、UIButton
ZFRippleButton
BFPaperCheckbox
YLLongTapShare
VBFPopFlatButton
9马胧、UINavigationBar
TLYShyNavBar
LTNavigationBar
BLKFlexibleHeightBar
BMYScrollableNavigationBar
最后
如果你看到了這里,那么我真的太感謝你了衔峰!謝謝佩脊!
附錄:
1、Facebook開放動畫引擎Pop垫卤,你也可以打造和Paper一樣酷的應(yīng)用了
2威彰、Introducing Pop, the animation engine behind Paper
3、Facebook Paper背后的動畫引擎Pop介紹(譯文)