Marcus’ Blog

馬克斯的碎念與筆記

Category: Objective-C (page 1 of 4)

iOS – Custom Animation Transition

這次會有機會碰到交互動畫,是因為專案當中,有個Presented 的畫面,左上角做了一個Dismissed 的按鈕,但他卻是一般Push 的back 按鈕,使用上UX 真的很不舒服,因此嘗試做了Presented 的動畫改變,並增加Gesture 來增加UX。

靈感來源是Facebook,下圖是Facebook 在Presented 自己的WebView 時所實作的交互動畫:

這次範例的專案完整的上傳到GitHub,若您對本文有興趣,歡迎先把專案下載下來邊讀邊玩。

Continue reading

iOS Background fetch

Background fetch

在iOS 系統當中,只有少數幾個狀況可以允許你的app 在背景做事:

  1. Audio and AirPlay
  2. Location updates
  3. Voice over IP
  4. Newsstand downloads
  5. External accessory communication
  6. Uses Bluetooth LE accessories
  7. Acts as a Bluetooth LE accessory
  8. Background fetch
  9. Remote notifications

其中,Background fetch 這個選擇,是希望你的app 在沒有使用的狀態下,也有機會可以更新資料,讓使用者下次回到你的app 時,可以看到最新的資料。

更詳細的介紹可以參考WWDC 2013 – Session 204

Continue reading

擷取UINavigationController swipe back 取消事件

情境

有兩個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。

Continue reading

iOS 10 UIWebViewDelegate 針對URL 額外的處理踩到的坑

在公司的專案當中,有一些透過Web JavaScript 操作 objc 程式碼的操作在升級為iOS 10 之後就突然不work 了,稍微找了一下發現,原本實作用於bridge 兩者的delegate method webView:shouldStartLoadWithRequest:navigationType: 所接收到的NSURLRequest當中的URL,在 iOS 10 以前的版本看起來會像是(其中忽略了URL encode):

Continue reading

NSObject 的+load 方法

前陣子中在使用Method swizzle 時赫然發現,所有的isntance 都會跑到我的swizzle method 來,而不是只針對有import 該category 的檔案,與我的理解不同。

因此研究了一下 +load 這個class method 究竟什麼時候會被invoke。

Continue reading

Older posts

© 2021 Marcus’ Blog

Theme by Anders NorenUp ↑