這裏記錄過去一個月,我看到的值得分享的內容,包含但不限於iOS知識,每個月的最後一天發佈。 歡迎推薦內容,可以前往zhangferry/iOSMonthlyReport提交issue。
Tips
閃光動畫
圖片上的閃光動畫,類似這種效果:
分析拆解可知這是一個帶透明的白色漸變移動產生的效果。漸變+移動,我們可以使用CAGradientLayer
+ CABasicAnimation
實現:
func showGradientAnimation() {
let gradient = CAGradientLayer()
gradient.frame = canvasView.bounds
//左上角到右下角的漸變
gradient.startPoint = CGPoint(x: 0, y: 0)
gradient.endPoint = CGPoint(x: 1, y: 1)
gradient.locations = [0.0, 0.0, 0.0]
//調透明度漸變要使用白色
gradient.colors = [UIColor.init(white: 1, alpha: 0.0).cgColor,
UIColor.init(white: 1, alpha: 0.3).cgColor,
UIColor.init(white: 1, alpha: 0.0).cgColor]
canvasView.layer.addSublayer(gradient)
let animation = CABasicAnimation.init(keyPath: "locations")
//從0位置開始從1位置結束
animation.fromValue = [0, 0, 0.3]
animation.toValue = [0.7, 1, 1]
animation.duration = gradientAnimationDuration
animation.repeatCount = 1
animation.isRemovedOnCompletion = true
gradient.add(animation, forKey: nil)
}
複製代碼
集成Universal Links時的幾點注意事項
這個是onlink總結對於各個平臺對應用間跳轉的支持情況,其中deeplink指Universal Links:
跳轉至facebook指定頁面
如果是facebook某一主頁,可以通過:
//這裏可以替換成自己的主頁id
let url = URL(string: "fb://page?id=**")!
UIApplication.shared.open(url, options: [:], completionHandler: nil)
複製代碼
這是使用了app scheme的方式進行跳轉的,要求本機安裝了facebook才能跳轉成功。
如果是跳轉到某一個主頁的某一個帖子,可以通過:
//這裏替換成固定的帖子鏈接
let url = URL(string: "https://www.facebook.com/**/posts/**")!
UIApplication.shared.open(url, options: [:], completionHandler: nil)
複製代碼
這是通過Universal Links
方式跳轉的,該鏈接可以通過蘋果的驗證。如果未安裝應用會跳轉到網頁端,如果安裝了就直接跳到指定頁面。
那正常來說,facebook主頁也應該可以通過支持deep link的https鏈接跳轉纔對,但實際測試來看是不行的。所以如果要加上是否安裝的邏輯的話,就是:
let url = URL(string: kFacebookHomePageSchemeUrl)!
if UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
UIApplication.shared.open(URL(string: kFacebookHomePageUrl)!, options: [:], completionHandler: nil)
}
複製代碼
測試:
推薦:將連接複製到便籤,郵件,短信,或者使用二維碼的形式使用。
不要將鏈接粘貼到 Safari 中 - iOS 目前阻止從任何瀏覽器的地址欄進行深度鏈接。
驗證apple-app-site-association的連接,可以蘋果的驗證工具
lottie動畫效果在安卓和網頁端正常在iOS端不正常
在一次使用lottie調用設計提供的動畫時,該動畫是一個放煙花,然後散開的動畫。用網頁預覽可以完美展示效果,但是放到客戶端運行時,卻只展示一部分即煙花上飛過程,而沒有散開效果。最後仔細查看文檔,找到這個:
經設計確認,煙花綻放的效果使用了AE中的Repeater(中繼器)
控件,而該控件在lottie的3.0版本還不支持,但是在2.5.2版本是支持的,回退版本至2.5.2解決了動畫確認問題。
PS:一些古怪問題,第一反應要從官網文檔說明、Issues、QA中找答案
幾個產品相關概念
ROI(return on investment):投資回報率 反應產品的盈利情況,用百分比表示。 市場營銷、運營活動,都是企業獲利爲出發點,通過利潤/投資量化目標。利潤的計算涉及財務,很多時候用更簡單的收入作分子。當運營活動的ROI大於1,說明這個活動是成功的,能賺錢。 ecpm(effective cost per mille):每千次展示可以獲得的廣告收入 這是廣告主預估自身收益的指標。 arpu(Average Revenue Per User):每用戶平均收入 ARPU注重的是一個時間段內運營商從每個用戶所得到的利潤。很明顯,高端的用戶越多,ARPU越高。 LTV(life time value):生命週期總價值 意爲客戶終生價值,是公司從用戶所有的互動中所得到的全部經濟收益的總和。
推薦閱讀
23 位開發者告訴你這次 WWDC 最讓他們興奮的新事物
對23位iOS開發者的採訪,一起來看下他們眼中這屆WWDC什麼最讓人興奮。
免費領取小專欄 -- WWDC2019 內參
6月份的WWDC給我們開發者帶來了很多東西,Dark Mode、Swift UI、Combine、iPad OS等等。也是我感覺近幾年WWDC乾貨最多的一界了。乾貨太多不知道怎麼學習怎麼辦?這裏沒故事的卓同學分享的WWDC2019 內參
免費領取名額。可以看各位大佬對WWDC的最新解讀分析,目前二十多天裏已經更新了30篇文章!。
SwiftUI 的一些初步探索 (一)
這是一篇解讀SwiftUI的文章,目前還有第二篇。而喵神也在計劃寫一本關於SwiftUI
和Combine
的書籍
我已經計劃寫一本關於 SwiftUI 和 Combine 編程的書籍,希望能通過一些實踐案例幫助您快速上手 SwiftUI 及 Combine 響應式編程框架,掌握下一代客戶端 UI 開發技術。現在這本書已經開始預售,預計能在 10 月左右完成。如果您對此有興趣,可以查看 ObjC 中國的產品頁面瞭解詳情及購買。十分感謝!
我發現喵神總能一下找到作爲新概念最應該注意的問題,比如SwiftUI和Swift5.1的關係,爲什麼需要新系統才能預覽以及ViewBuilder裏接受那些條件語句等。想了解SwiftUI 這篇文章真是必讀
Github
About-SwiftUI
WWDC當天開始建立的一個專門收集SwiftUI資料的倉庫,應該是史上最全了。果然大家還是最愛SwiftUI!MovieSwiftUI
使用 SwiftUI
& Combine
和MovieDB API實現的一款應用。
Talk is cheap, show me the code.
結合實踐是最快速的瞭解一個概念的方式。這也是最近一段時間上升最快的SwiftUI&Combine
相關倉庫了。
CombineSwiftPlayground
一個幫助理解Combine
概念的 Swift Playground。對於首次接觸響應式編程的人來說具體事例是幫助理解概念很好的方式。
該Playgrounds要求Xcode11 beta2及以上版本才能查看。
rxswift-to-combine-cheatsheet
列舉了Combine
和RxSwift
之間的差別和一些概念上的對比,對於有一點RxSwift概念的人來說可以快速的理解Combine,也是對於想從RxSwift遷移至Combine的一份參考。
文摘
普通選民也開始意識到,民主機制已經不再能夠爲他們帶來權力。世界正在變化,但他們摸不清變化的方式和原因。權力正在轉移,但選民不知道權力去了哪兒。在英國選民的想象中,權力被歐盟奪走了,所以他們投票脫歐。而在美國選民的想象中,是既得利益者壟斷了權力,所以他們支持反體制的候選人,比如伯尼·桑德斯和唐納德·特朗普。但可悲的事實是,沒有人知道所有的權力去了哪兒。就算英國離開歐盟、特朗普接掌白宮,權力也絕不會回到普通選民身上。 --未來簡史
月度小結
關於WWDC
WWDC發佈的信息裏面最讓我感興趣的就是SwiftUI
和Combine
,目前從Github的活躍情況來看也是這兩個技術相關倉虧最多。SwiftUI解決了寫UI佈局的痛點,而Combine的出現表明了蘋果對響應式編程的認可,對於我這種使用了一年RxSwift的人來說簡直是一種福音。還有一點是這兩個大招都是對Swift的支持,這是一個很明顯的信號:Swift已經很成熟了,很強大了,以後還會有更多更好的優化。
過去幾年,你可以忽視 Swift,但是,未來幾年,如果不擁抱 Swift,將無法緊跟着 Apple 生態圈。
關於生活
從上個月開始有規律的進行跑步,上個月跑步里程是60km,這個月是70km,距年初定的目標已經完成了56%。 跑步帶來的一個好處是最近一段時間的睡眠質量有顯著提高,睡得更香了。如果你有睡眠質量問題,可以考慮跑步這個方式嘗試解決哦。
封面圖來自於在公司園區跑道上的拍攝。