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

翻譯自Texture

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

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

一、入門

Texture的基本單位就是nodeASDisplayNode是一個抽象UIView,j就想UIView是一個抽象CALayer。不同于只能在主線程上使用的視圖,nodes是線程安全的:您可以在后臺線程上并行實例化和配置它們的整個層次結(jié)構(gòu)。

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

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

節(jié)點

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

當然,您可以直接通過node.view或直接訪問底層視圖或圖層node.layer
,只需確保在主線程上執(zhí)行!

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

節(jié)點容器

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

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

布局引擎

紋理的布局引擎既是其最強大的功能之一,也是其最獨特的功能之一?;?code>CSS FlexBox模型,它提供了一種聲明性的方式來指定自定義節(jié)點的大小和子節(jié)點的布局。雖然默認情況下同時渲染所有節(jié)點,但是通過ASLayoutSpec為每個節(jié)點提供異步測量和布局來執(zhí)行。

高級開發(fā)者功能

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

(全部列表即將推出?。?/p>

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

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

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

二、資源

瀏覽我們的許多示例項目

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

  • 一個無限滾動的家庭飼料,顯示紋理更平滑的滾動表現(xiàn)。

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

視頻

教程/文章

布局資源

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

三、安裝

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

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

或創(chuàng)建一個[Objective-C橋接頭](https://developer.apple.com/library/ios/documentation/swift/conceptual/buildingcocoaapps/MixandMatch.html)(Swift)。
如果您在安裝紋理時遇到任何問題,請通過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

在運行前完全退出Xcode
在終端的項目目錄里,

pod install

要更新您的Texture版本,請在終端的項目目錄里運行

pod update Texture


#### 2、Carthage (standard build)

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

Texture 也可以通過[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)建每個文件夾。

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

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


#### 3、Carthage (light)

`Texture`不支持使用`Carthage`的輕量級的方法,您可以手動添加項目文件。這是因為它的一個依賴關(guān)系`PINCache`(一個嵌套的依賴關(guān)PINRemoteImage)還沒有一個項目文件。

如果不包括`PINRemoteImage`與`PINCache`,你不會得到紋理的完整圖像的功能集。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 這篇文章會非常詳細的分析 iOS 界面構(gòu)建中的各種性能問題以及對應(yīng)的解決思路,同時給出一個開源的微博列表實現(xiàn),通過...
    翻炒吧蛋滾飯閱讀 2,414評論 0 19
  • Carthage v0.26.2(原文鏈接) Carthage的目標是用最簡單的方式來管理Cocoa第三方框架。 ...
    iOSLee閱讀 3,837評論 0 7
  • iOS 蘋果官方Demo合集 字數(shù)10517閱讀21059評論18喜歡144 其實, 開發(fā)了這么久, 不得不說, ...
    bingo居然被占了閱讀 10,585評論 2 31
  • 一直喜歡沒事瞎寫三言兩語,是心靈的寄托,也是記錄生活的方式。是的,我喜歡用鏡頭記錄生活,然后用文字表達情感。 很偶...
    午后窗臺的貓閱讀 359評論 0 0

友情鏈接更多精彩內(nèi)容