當前設置用於與一個UITextView
小區初始滯後我有一個自細胞,從XIB,其中大部分空間都被覆蓋的UITextView加載。此外,該單元格可能有幾個文字瀏覽。並且在這個單元格內還有幾個元素(一個UIView + 2個UILabels)。
的問題
我試圖消除所有這些觀點和滯後停留,即使我只有一個TextView的。而且,滯後只是第一次發生。之後,當我向下滾動並跑入另一個帶有textview的單元格時,滯後不會發生。
附加信息
與此自定義單元格的事情是,一個TextView添加到UIStackView
。在開始時,stackview是空的,因爲我不知道(在開發時)有多少textview可能/應該在那裏。
我知道這是另一件可能會影響性能的東西,但我已經通過檢查在出列單元格時stackview的arrangedSubviews
數組中已經找到了多少文本視圖來解決它(我想盡可能最好),以及基於這些信息,我只是適當地添加或隱藏視圖(而不是每次摧毀並重新創建所需數量的文本視圖)。
我已經嘗試過使用儀器,但我沒有注意到我的任何類都佔用CPU時間,而是由框架在內部調用的一些UIKit
方法調用是造成這種情況的原因......如果需要,我可以發佈截圖,但我想這不是相關的,因爲那些框架調用似乎是通常的系統&。另外我正在測試iPad 2:D,所以也許這是一件事情(我必須爲慢速設備優化應用程序)。
不過,我想我可以優化這個莫名其妙?
的了myCell類是相當簡單的(僞代碼):
class MyCell:UITableViewCell{
func configure(data:SomeData){
self.addOrHideViewsIfNeeded()
}
private func addOrHideViewsIfNeeded(){
//here, I check if stackview.arrangedSubviews has, and how many subviews are there, and
//add/hide them appropriately, means if I have to add them, I load them from the nib, otherwise, I reuse views from by adding them/removing them from a pool.
}
}
而且滯後處於調試版本比較Release版本,其中意義更加noticealbe,但它仍然是明顯的。
哦,是的,文本視圖最初從一個筆尖加載並使用系統字體,而不是自定義字體。 – Whirlwind
我不認爲這是由於'UITextView'。根據我的經驗以及可以在線閱讀的內容,「UIStackView」雖然非常方便,但性能較差。複雜的AutoLayout規則也需要一些時間來計算。在我們的應用程序中,我們在單元上有20個組件,並且有很多約束條件,即使在較新的設備上也存在可見的滯後。我們通過切換到手動佈局來解決這個問題 - 我們在單元layoutSubviews中自己計算框架。雖然我意識到這可能意味着代碼中的很多更改,但可能值得一試。 – Losiowaty
@Losiowaty嗯,事情是,我在我的表格視圖中有不同類型的單元格。裏面的每個單元格都有uistackview。只有文本視圖的單元格第一次滯後。但正如我所說,滯後來自Mac的硬盤,而附加在調試器上。如果應用程序未通過USB電纜連接,則沒有(可見的)延遲。但是,堆棧視圖並不是高性能的。 – Whirlwind