iOS開發月報#9|201903

這里記錄過去一個月,我看到的值得分享的內容,包含但不限于iOS知識,每個月的最后一天發布。
歡迎推薦內容,可以前往zhangferry/iOSMonthlyReport提交issue。

image

Tips

Spine + SpriteKit

項目中需要引入一些實物動畫,每個動畫之間有不同形態的切換,考慮過gif, mp4, AE + lottie, Spine + SpriteKit。

最后確定使用Spine做動畫效果,用SpriteKit處理動畫。Spin并沒有官方支持SpirteKit的庫,但有一個做的比較好的第三方庫maxgribov/Spine,支持Swift4.1。

該庫支持Bones, Slots, Skins等常用的動畫要素,通過Spine導出的json文件和動畫素材做出各種動畫效果,是僅有的近期還在維護的支持SpriteKit的Spine運行時庫。但它也存在一個問題,還不支持Mesh Animation(網格動畫)。如果所需的動畫效果不需要網格的話,非常推薦使用這個庫。

而我們所需的動畫效果又必須用到網格動畫,思考再三考慮決定放棄使用這個庫,使用SKTextureAtlas(紋理集) + 逐幀動畫來實現特殊的動畫效果。雖然輸出的還是png序列,但是SpriteKit對紋理集有足夠的優化,Xcode會在打包時把.atlas文件夾中的所有圖片做成一張合圖,然后生成一個plist文件描述每個小圖片的位置信息,所以包的大小和渲染成本都會大大降低。

快速創建轉場樣式

說到自定義轉場我們可能會直接想到UIViewControllerAnimatedTransitioning,結合這個類我們可以實現多種多樣的訂閱樣式。但是使用這種方式做轉場,我們需要引入很多代碼。有一種簡單的實現轉場的方式是通過CATransition

An object that provides an animated transition between a layer's states.

通過文檔的介紹我們知道,這個類就是用來做轉場的,只不過支持的樣式有限,但如果正好滿足你需要的話,推薦使用這種方式來實現轉場。

我們來實現一個present的漸變效果:

//創建transition對象
let transition = CATransition()
transition.duration = 0.5
//動畫樣式
//type: .fade, .moveIn, .push, .reveal
transition.type = .fade
//動畫出現方位
//subtype: .fromRight, .fromLeft, .fromTop, .fromBottem
//transition.subtype = .fromRight
transition.timingFunction = CAMediaTimingFunction(name: .easeIn)

self.view.window?.layer.add(transition, forKey: "present")
self.present(targetVc, animated: false, completion: completion)

如果是做push的漸變,我們只需要改變最后的控制動畫的代碼:

//父容器為UINavigationController
self.view.layer.add(transition, forKey: "push")
self.present(targetVc, animated: false, completion: completion)

//父容器為UITabbarController
self.tabBarController?.view.layer.add(transition, forKey: "push")
self.present(targetVc, animated: false, completion: completion)

什么是UserAgent

User-Agent 首部包含了一個特征字符串,用來讓網絡協議的對端來識別發起請求的用戶代理軟件的應用類型、操作系統、軟件開發商以及版本號,然后前端的展示就可以根據這些信息進行針對性的優化。

我們打開Chrome瀏覽器,生成一個請求,然后用Charles抓包,可以看到對應的User-Agent

user-agent  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.28 Safari/537.36

通過UA我們可以得到以下信息:

信息項 內容
瀏覽器名稱 Chrome
瀏覽器版本號 70.4.3729.28
渲染引擎 WebKit 537.36
操作系統 Mac OS 10.13.6

Apple Configurator 2 出現 Unauthorized Error

注銷賬號,再次登錄

Command PhaseScriptExecution failed with a nonzero exit code

運行一個項目時遇到了這個bug提示,一直編譯不過去,這其實是一個Xcode10引起的bug。
解決方案:
在Xcode菜單欄選擇File -> Workspace Setting -> Build System 選擇Legacy Build System 重新運行即可。
參考:踩坑Xcode 10之New Build System

斐波那契函數

斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……

這個是我們公司技術面試的必問題目,也是篩掉人數最多的一個問題。有一部分同學會使用數組嘗試解決這個問題,但這會把問題復雜度升級,還有些可能根本沒有思路。但其實這個問題不復雜的,用到遞歸可以很快的解決。斐波那契函數的數學表達是:

F(1)=1
F(2)=1
F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

用Swift實現就是:

func fibonacci(n: Int) -> Int {
    if n == 1 || n == 2 {
        return 1
    } else {
        return fibonacci(n: n - 1) + fibonacci(n: n - 2)
    }
}

推薦閱讀

SpriteKit Tutorial for Beginners

raywenderlich上介紹SpriteKit入門的一篇教程,通過這篇文章你可以實現一個忍者擊殺怪物的小游戲,理解SpriteKit框架里常用的幾種游戲元素。不得不說這個教程做的是真的棒??

開發小知識

該文章主要整理一些小知識點,主要涉及 iOS 以及計算基礎相關知識點,某些知識點暫時只有標題,后續會持續更新。筆者最近一段時間面試過程中發現一些普遍現象,對于一些很不起眼的問題,很多開發者都只停留在知道、聽說過的層面,但是一旦問 是什么 和 為什么 ,很多應試者回答的并不理想。
大家可以對著這篇文章查找自己的知識盲區。

Swift 5 終于來了,快來看看有什么更新!!

Xcode10.2 已經發布,是時候開始使用 Swift5 了,可以提前看下老司機周報總結的Swift5 更新內容,對適配工作做好準備。

蘋果開了一場沒有任何硬件的發布會

3 月 26 日凌晨 1 點,蘋果在 Apple Park 新總部的喬布斯劇院召開了春季特別活動。

在活動現場,蘋果發布了:

  • 新聞服務 Apple News+
  • 可以返現的 Apple Card
  • 游戲服務 Apple Arcade
  • 全新的 Apple TV App 服務
  • Apple TV+ 原創視頻服務

全部是軟件和服務,沒有新硬件的出現——這或許意味著,蘋果正在尋找下一個十年的生長空間。

音視頻

辭職環游中國的程序員小 K

大概每個人都有過這種沖動,辭掉工作出去旅行,想去哪就去哪,再也不用趕需求修 bug 通宵加班。不過對大多數人來說,也就止步于“想想”,并不會付諸行動。但是我身邊有一位朋友,真的做到了這件事:辭職一年環游中國!

這是最近幾期ggtalk對我觸動最大的一期,同樣是做iOS開發的,為什么人家那么優秀??

Github

996.ICU

工作996,生病ICU。這段時間的“明星項目”,旨在反抗國內互聯網公司形成的每周工作6天,每天工作早9點到晚9點的不良加班風氣。截止到3月30號,僅四天時間star已經超11萬。

XVim2

XVim2是一個用于Xcode的Vim插件。如果你是一個Vim黨,你可以直接在Xcode代碼編輯界面使用Vim的各種特性。我是最近開始接觸,也在慢慢適應Vim的遠離鼠標工作模式。另附送一個安裝流程:

1、關閉Xcode
2、鑰匙串->證書助理->證書創建
名稱:XcodeSigner
身份類型:自簽名根證書
證書類型:代碼簽名
3、重新簽署Xcode

#需要等待一段時間
sudo codesign -f -s XcodeSigner /Applications/Xcode.app 

4、按照官方步驟安裝XVim2

文摘

培養出在沒人監督自己的時候也能高效工作的自我責任感非常重要。你也可以拔這稱為是具有一種性格或者具有一種素質,它們都是同一個概念。如果缺乏對自己的責任感,你將永遠依賴外部動機來驅使你努力工作。你容易折服于一根胡蘿卜的誘惑,也容易屈從于一根大棒的威脅。

---《軟技能:代碼之外的生存指南》

最終,它成為我自己的知識體系中嚴重的短板。沒有花時間去徹底掌握Lambda表達式的工作原理,結果浪費了大把的時間。最后當我下決心花時間去了解Lambda表達式的時候,我只花了幾個小時閱讀并實踐,就領會了這一概念。

---《軟技能:代碼之外的生存指南》

回到從前,在我們剛開始一起生活的時候,我們就決定將我們收入的10%用于風險什一稅--實際上我們把這部分收入捐給一家慈善機構,以幫助印度的孤兒。在我們第一次奉獻什一稅的第二周,我的妻子就得到了加薪,加薪的數額正好是我們當時奉獻什一稅的數額。我個人認為,我們的成功很大一部分就是因為這種對奉獻的承諾,一直恪守到今天。
即使你不信仰任何宗教,我認為這一點也有某種符合邏輯的解釋。我認為,你把錢看的越重,你就越難以在理財方面做出明智的、成功的投資選擇。自愿把自己收入的固定數額奉獻或者捐贈給慈善機構,可以改變你對金錢的看法。這一思想上的轉變讓你從金錢的所有者變成管理者。

--《軟技能:代碼之外的生存指南》

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,663評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,125評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,506評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,614評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,402評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,934評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,021評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,168評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,690評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,596評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,784評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,288評論 5 357
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,027評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,404評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,662評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,398評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,743評論 2 370

推薦閱讀更多精彩內容