Texture——保持最復(fù)雜的用戶界面的流暢和響應(yīng)

翻譯自Texture

Texture 是建立在UIKit之上的iOS框架,可以保持最復(fù)雜的用戶界面的流暢和響應(yīng)蝙搔。它最初是為了使Facebook的頁(yè)面盡可能的流暢吃型,并與流行的基于物理的動(dòng)畫相輔相成 - 但它與UIKit Dynamics和常規(guī)應(yīng)用程序設(shè)計(jì)一樣強(qiáng)大勤晚。最近赐写,它被用來(lái)加強(qiáng)Pinterest的應(yīng)用重寫

隨著框架的發(fā)展血淌,增加了許多功能悠夯,通過(guò)消除現(xiàn)代iOS應(yīng)用程序中常見的常見樣板結(jié)構(gòu)沦补,可以節(jié)省開發(fā)人員的時(shí)間夕膀。如果您曾經(jīng)處理過(guò)cell重復(fù)使用的錯(cuò)誤美侦,那么嘗試預(yù)先為頁(yè)面或滾動(dòng)樣式界面預(yù)加載數(shù)據(jù)易猫,甚至只是試圖讓您的應(yīng)用程序丟棄太多的框架准颓,從而可以從集成紋理獲益攘已。

一、入門

Texture的基本單位就是node吠勘。 ASDisplayNode是一個(gè)抽象UIView看幼,j就想UIView是一個(gè)抽象CALayer诵姜。不同于只能在主線程上使用的視圖搏熄,nodes是線程安全的:您可以在后臺(tái)線程上并行實(shí)例化和配置它們的整個(gè)層次結(jié)構(gòu)心例。

為了保持其用戶界面的流暢和響應(yīng)止后,您的應(yīng)用程序應(yīng)該以每秒60幀的速度呈現(xiàn) - iOS上的黃金標(biāo)準(zhǔn)译株。這意味著主線程有一秒鐘的時(shí)間推動(dòng)每個(gè)幀歉糜。這是執(zhí)行所有布局和繪圖代碼的16毫秒匪补!并且由于系統(tǒng)開銷蚤氏,您的代碼通常在導(dǎo)致幀丟失之前運(yùn)行不到10毫秒竿滨。

Texture使您可以從主線程移除圖像解碼姐呐,文本大小和渲染以及其他昂貴的UI操作到其它線程,以保持主線程可用于響應(yīng)用戶交互鸠澈。 Texture還有其他的技巧笑陈,但是我們稍后會(huì)介紹涵妥。

節(jié)點(diǎn)

如果習(xí)慣于使用視圖,您已經(jīng)知道如何使用節(jié)點(diǎn)鹉勒。
大多數(shù)方法有一個(gè)節(jié)點(diǎn)相當(dāng)于大部分 UIViewCALayer性能也是可用的帆锋。在任何情況下,如果存在命名差異(如.clipsToBoundsvs .masksToBounds)禽额,節(jié)點(diǎn)將默認(rèn)為該UIView
`名稱锯厢。唯一的例外是節(jié)點(diǎn)使用位置而不是中心。

當(dāng)然脯倒,您可以直接通過(guò)node.view或直接訪問(wèn)底層視圖或圖層node.layer
实辑,只需確保在主線程上執(zhí)行!

Texture提供了各種節(jié)點(diǎn)來(lái)替代您以前使用的大多數(shù)UIKit組件藻丢。大規(guī)模應(yīng)用程序已經(jīng)能夠使用Texture節(jié)點(diǎn)完全編寫UI徙菠。

節(jié)點(diǎn)容器

將應(yīng)用轉(zhuǎn)換為使用紋理時(shí),常見的錯(cuò)誤是將節(jié)點(diǎn)直接添加到現(xiàn)有的視圖層次結(jié)構(gòu)中郁岩。這樣做將幾乎保證您的節(jié)點(diǎn)在呈現(xiàn)時(shí)將閃爍问慎。

相反,您應(yīng)該添加節(jié)點(diǎn)作為許多節(jié)點(diǎn)容器類之一的子節(jié)點(diǎn)歇终。這些容器負(fù)責(zé)告訴包含的節(jié)點(diǎn)他們當(dāng)前處于什么狀態(tài)奕短,以便可以加載數(shù)據(jù),并且可以盡可能高效地渲染節(jié)點(diǎn)佑刷。
您應(yīng)該將這些類作為UIKit和Texture之間的集成點(diǎn)。

布局引擎

紋理的布局引擎既是其最強(qiáng)大的功能之一频鉴,也是其最獨(dú)特的功能之一。基于CSS FlexBox模型,它提供了一種聲明性的方式來(lái)指定自定義節(jié)點(diǎn)的大小和子節(jié)點(diǎn)的布局匙睹。雖然默認(rèn)情況下同時(shí)渲染所有節(jié)點(diǎn)梦谜,但是通過(guò)ASLayoutSpec為每個(gè)節(jié)點(diǎn)提供異步測(cè)量和布局來(lái)執(zhí)行浴讯。

高級(jí)開發(fā)者功能

紋理提供了在UIKit或Foundation中無(wú)法找到的各種高級(jí)開發(fā)人員功能捏肢。我們的開發(fā)人員發(fā)現(xiàn),AsyncDisplyKit可以簡(jiǎn)化其架構(gòu)并提高開發(fā)人員的速度。

(全部列表即將推出U哂酢)

添加紋理到您的應(yīng)用程序

如果您是Texture的新手育八,建議您查看我們的ASDKgram示例應(yīng)用程序。
我們已經(jīng)創(chuàng)建了一個(gè)方便的指南(即將推出),并提供了一步一步的指導(dǎo)侨颈,并提供了關(guān)于如何向應(yīng)用程序添加紋理的示例耘分。

如果您遇到任何問(wèn)題芽丹,請(qǐng)聯(lián)系我們GitHub或Texture
Slack社區(qū)尋求幫助楼肪。

二当纱、資源

瀏覽我們的許多示例項(xiàng)目啥供。

如果您剛開始使用Texture,我們建議您先從[ASDKgram(https://github.com/texturegroup/texture/tree/master/examples/ASDKgram)示例應(yīng)用程序開始库糠,該應(yīng)用程序?qū)⑹褂肬IKit實(shí)現(xiàn)的照片F(xiàn)eed與使用Texture實(shí)現(xiàn)的相同F(xiàn)eed進(jìn)行比較伙狐。應(yīng)用功能:

  • 一個(gè)無(wú)限滾動(dòng)的家庭飼料艘虎,顯示紋理更平滑的滾動(dòng)表現(xiàn)妄呕。

  • 一個(gè)顯著大小的代碼庫(kù)停做,以演示使用紋理設(shè)計(jì)應(yīng)用程序所需的代碼少得多飒房。

視頻

教程/文章

布局資源

Texture強(qiáng)大的布局系統(tǒng)是基于CSS FlexBox模型垃你。
這些網(wǎng)站可用于學(xué)習(xí)此系統(tǒng)的基礎(chǔ)知識(shí)。

三喂很、安裝

Texture可以通過(guò)CocoaPods或Carthage添加到您的項(xiàng)目中惜颇。不要忘記導(dǎo)入框架頭:

#import <AsyncDisplayKit / AsyncDisplayKit.h>```

或創(chuàng)建一個(gè)[Objective-C橋接頭](https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html)(Swift)。
如果您在安裝紋理時(shí)遇到任何問(wèn)題少辣,請(qǐng)通過(guò)Github或[Slack](http://texturegroup.org/slack.html)聯(lián)系我們凌摄!

#### 1、CocoaPods

CocoaPods提供[Texture](https://cocoapods.org/pods/Texture)漓帅。
將以下內(nèi)容添加到您的Podfile中:

target 'MyApp' do
pod "Texture"
end

在運(yùn)行前完全退出Xcode
在終端的項(xiàng)目目錄里锨亏,

pod install

要更新您的Texture版本,請(qǐng)?jiān)诮K端的項(xiàng)目目錄里運(yùn)行

pod update Texture


#### 2忙干、Carthage (standard build)

>使用Carthage的標(biāo)準(zhǔn)方法是將Cartfile列出為依賴關(guān)系器予,然后運(yùn)行`carthage update`將依賴關(guān)系下載到`Cathage / Checkouts`文件夾中,并將其中的每一個(gè)構(gòu)建到位于“Carthage / Build”文件夾中的框架中捐迫,最后開發(fā)人員必須手動(dòng)整合項(xiàng)目乾翔。

Texture 也可以通過(guò)[Carthage](https://github.com/Carthage/Carthage)安裝。

將以下內(nèi)容添加到您的Cartfile以獲取**最新版本**的分支:

github“texturegroup / texture”

或者是施戴,主分支

github“facetexturegroup / textureaster”


Texture有自己的Cartfile列出它的依賴關(guān)系反浓,所以這是您需要包含在您的Cartfile中的唯一一行。

carthage update


在終端赞哗,這將獲取`Carthage/Checkouts`文件夾的依賴關(guān)系雷则,然后構(gòu)建每個(gè)文件夾。

查找終端輸出確認(rèn)`Texture`肪笋,`PINRemoteImage (3.0.0-beta.2)`并且`PINCache`都被取出和建立月劈。Texture框架Cartfile應(yīng)正確處理依賴關(guān)系。

在Xcode中涂乌,在應(yīng)用程序目標(biāo)的**“常規(guī)”**設(shè)置選項(xiàng)卡上的 **“鏈接框架和庫(kù)”**部分中艺栈,從`Carthage/Build`磁盤上的文件夾中拖放要使用的每個(gè)框架。


#### 3湾盒、Carthage (light)

`Texture`不支持使用`Carthage`的輕量級(jí)的方法湿右,您可以手動(dòng)添加項(xiàng)目文件。這是因?yàn)樗囊粋€(gè)依賴關(guān)系`PINCache`(一個(gè)嵌套的依賴關(guān)PINRemoteImage)還沒(méi)有一個(gè)項(xiàng)目文件罚勾。

如果不包括`PINRemoteImage`與`PINCache`毅人,你不會(huì)得到紋理的完整圖像的功能集吭狡。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市丈莺,隨后出現(xiàn)的幾起案子划煮,更是在濱河造成了極大的恐慌,老刑警劉巖缔俄,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弛秋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡俐载,警方通過(guò)查閱死者的電腦和手機(jī)蟹略,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遏佣,“玉大人挖炬,你說(shuō)我怎么就攤上這事∽瓷簦” “怎么了意敛?”我有些...
    開封第一講書人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任首妖,我火速辦了婚禮,結(jié)果婚禮上奔害,老公的妹妹穿的比我還像新娘吓肋。我一直安慰自己,他們只是感情好异雁,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開白布捶障。 她就那樣靜靜地躺著,像睡著了一般纲刀。 火紅的嫁衣襯著肌膚如雪项炼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,549評(píng)論 1 312
  • 那天示绊,我揣著相機(jī)與錄音锭部,去河邊找鬼。 笑死面褐,一個(gè)胖子當(dāng)著我的面吹牛拌禾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播展哭,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼湃窍,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闻蛀!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起您市,我...
    開封第一講書人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤觉痛,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后茵休,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體薪棒,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年榕莺,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了盗尸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡帽撑,死狀恐怖泼各,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亏拉,我是刑警寧澤扣蜻,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站及塘,受9級(jí)特大地震影響莽使,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜笙僚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一芳肌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肋层,春花似錦亿笤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蒲拉,卻和暖如春肃拜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背雌团。 一陣腳步聲響...
    開封第一講書人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工燃领, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人锦援。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓猛蔽,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親雨涛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枢舶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理懦胞,服務(wù)發(fā)現(xiàn),斷路器凉泄,智...
    卡卡羅2017閱讀 134,714評(píng)論 18 139
  • 這篇文章會(huì)非常詳細(xì)的分析 iOS 界面構(gòu)建中的各種性能問(wèn)題以及對(duì)應(yīng)的解決思路躏尉,同時(shí)給出一個(gè)開源的微博列表實(shí)現(xiàn),通過(guò)...
    翻炒吧蛋滾飯閱讀 2,315評(píng)論 0 19
  • Carthage v0.26.2(原文鏈接) Carthage的目標(biāo)是用最簡(jiǎn)單的方式來(lái)管理Cocoa第三方框架后众。 ...
    iOSLee閱讀 3,598評(píng)論 0 7
  • iOS 蘋果官方Demo合集 字?jǐn)?shù)10517閱讀21059評(píng)論18喜歡144 其實(shí), 開發(fā)了這么久, 不得不說(shuō), ...
    bingo居然被占了閱讀 10,165評(píng)論 2 31
  • 一直喜歡沒(méi)事瞎寫三言兩語(yǔ)蒂誉,是心靈的寄托教藻,也是記錄生活的方式。是的右锨,我喜歡用鏡頭記錄生活括堤,然后用文字表達(dá)情感。 很偶...
    午后窗臺(tái)的貓閱讀 300評(píng)論 0 0