iOS 上不建議在非主線程進行UI操作,在 UIScrollView 生成大量內容的時候,流暢度會由於大量 UI 操作占用主線程而變慢。 UIWebView 在載入時會根據使用者的操作而停止 UI

時間 2021-06-03 18:51:39

1樓:

這裡的「在UIScrollView生成大量內容的時候」我不太明白具體是指什麼,也就是內容是如何生成的?

可以通過類似與paging + 等待(activityIndicator)的方式來減少scroll view的滑動頻率,在等待時集中生成內容。

另外,如果你的效能下降是由於CoreGraphic在draw view時引起的,可以設定CALayer.rasterize屬性,可以大幅減少view被重畫的次數。

最後,一定要搞清楚,到底是什麼在吃效能,是生成內容?還是對內容的繪製?前者吃CPU,後者吃GPU。有沒有經過測試?如果是前者,你完全可以在其他執行緒中進行。

2樓:

1.資料處理分離,提前準備好資料,可以在另外乙個執行緒處理好資料再扔回主線程。

2.在程式的執行過程中所說的主線程一般就是ui執行緒,負責繪圖,事件等。而卡的原因一般是繪製內容太多或者是中間處理過程太耗時了。這個要看你程式的功能來改進了。

3.如果實在不行,可以試試用opengles來做,文字或者圖形的話有很多現成的庫可以用,沒有想像中麻煩。

3樓:瓢蟲

在非主線程進行UI操作有很大機率會導致程式崩潰,或者出現預期之外的效果。

UIScrollView也好,UITableView也好,本質上是一樣的。如果不想讓主線程變慢,一般處理是開乙個或若干個執行緒進行資料處理,主線程只負責更新UI。經驗告訴我,即便這樣做也不能百分百保證UI不卡(你用自帶的Safari應該能感覺到),這樣做只是能避免主線程被鎖死,而程式出現所謂的假死。

你所說的生成大量內容建議做成模態視窗專門處理,避免造成不好的使用者體驗,盡可能的優化資料生成和處理的模組。

UIWebView是根據所謂的分片載入進行的,其背後的技術手段和 CALayer的某些擴充套件類有關。(曾經閱讀的回憶)

在 iOS 上推薦的 Google Reader 軟體有哪些?

KY Lee Ipad上,mr.reader。介面定製方面。速度快,最好沒有之一。Iphone,reeder。但還是差個縮圖顯示。iReadg要不是ui過分的醜。不然可以替代上面兩個 reeder用來閱讀google reader確實不錯,比較清爽。但同時帶來的問題就是選項較少,並且貌似不能管理rs...

iPhone7建不建議公升iOS11?

已登出 建議公升級,電池不行了就換塊電池 iOS版本手機預裝的那一代往後兩代可以公升,ios版本不建議跨越3代系統,比如7預裝ios10,就可以公升到ios12,再往後就不建議公升了,這個看個人喜好,看中新版本新功能的建議公升到手機卡到不能用,看中系統穩定用的時間長建議留在大版本的最後乙個小版本,比...

普通的 GUI 庫,在非主線程裡操作 UI ,是「必然」會出錯還是「有很大的概率」會出錯?

如果是Windows GDI的GUI,並且合理的設計架構的話 比如當前主線程卡死了,你又開個執行緒專門繪製介面 很大機率不出錯 除此之外,很大機率出錯 但是但是但是,多執行緒寫UI,往往不是因為資源什麼的出不出錯,而在於互動輸入輸出的一致性,前者你硬上鎖的話,除了沒意義和慢,並沒有什麼問題,後者如果...