這次會有機會碰到交互動畫,是因為專案當中,有個Presented 的畫面,左上角做了一個Dismissed 的按鈕,但他卻是一般Push 的back 按鈕,使用上UX 真的很不舒服,因此嘗試做了Presented 的動畫改變,並增加Gesture 來增加UX。
靈感來源是Facebook,下圖是Facebook 在Presented 自己的WebView 時所實作的交互動畫:
這次範例的專案完整的上傳到GitHub,若您對本文有興趣,歡迎先把專案下載下來邊讀邊玩。
這次會有機會碰到交互動畫,是因為專案當中,有個Presented 的畫面,左上角做了一個Dismissed 的按鈕,但他卻是一般Push 的back 按鈕,使用上UX 真的很不舒服,因此嘗試做了Presented 的動畫改變,並增加Gesture 來增加UX。
靈感來源是Facebook,下圖是Facebook 在Presented 自己的WebView 時所實作的交互動畫:
這次範例的專案完整的上傳到GitHub,若您對本文有興趣,歡迎先把專案下載下來邊讀邊玩。
在iOS 系統當中,只有少數幾個狀況可以允許你的app 在背景做事:
其中,Background fetch 這個選擇,是希望你的app 在沒有使用的狀態下,也有機會可以更新資料,讓使用者下次回到你的app 時,可以看到最新的資料。
更詳細的介紹可以參考WWDC 2013 – Session 204。
有兩個ViewController,分別為A 跟B:
A – 一個NavigationController 的rootViewController,擁有TabBar,但非使用
TabBarController
B – 一個一般的
UIViewController
當我們從A push 到B 時,TabBar 是不會消失的,一般來說,若使用UITabBarController
,可以透過修改UIViewController
的property hidesBottomBarWhenPushed
來隱藏TabBar。
但公司的專案當中,當時因為一些歷史包袱並沒有使用UITabBarController
,因此必須實作UINavigationControllerDelegate
當中的navigationController:willShowViewController:animated:
方法,藉此觀察目前的ViewControllers stack 的狀況來決定是否要隱藏TabBar。
在公司的專案當中,有一些透過Web JavaScript 操作 objc 程式碼的操作在升級為iOS 10 之後就突然不work 了,稍微找了一下發現,原本實作用於bridge 兩者的delegate method webView:shouldStartLoadWithRequest:navigationType:
所接收到的NSURLRequest
當中的URL,在 iOS 10 以前的版本看起來會像是(其中忽略了URL encode):
前陣子中在使用Method swizzle 時赫然發現,所有的isntance 都會跑到我的swizzle method 來,而不是只針對有import 該category 的檔案,與我的理解不同。
因此研究了一下 +load
這個class method 究竟什麼時候會被invoke。
© 2022 Marcus’ Blog
Theme by Anders Noren — Up ↑