日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)IOS教程:創(chuàng)建高性能的可滾動(dòng)Stack

概覽

你的 App 需要在容器視圖中顯示的數(shù)據(jù)經(jīng)常會(huì)超過設(shè)備屏幕上容許的空間。對(duì)于重復(fù)視圖或視圖組,水平 Stack 和垂直 Stack 是很好的解決方案,但它們沒有內(nèi)建的滾動(dòng)機(jī)制。你可以通過將 Stack 包裝在 ScrollView (英文) 中來(lái)添加滾動(dòng),并在出現(xiàn)性能問題時(shí)切換到惰性 Stack。

臨海網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站開發(fā)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來(lái)到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

在可滾動(dòng)的容器中顯示視圖組

實(shí)施重復(fù)視圖或視圖組很簡(jiǎn)單,只需將它們包裝在 ScrollView (英文) 內(nèi)的 HStack (英文) 或 VStack (英文) 中即可。

 ScrollView(.horizontal) {  HStack {  ProfileView()  ProfileView()  ProfileView()  ProfileView()  ProfileView()  } } .frame(maxWidth: 500)

如果上述示例代碼中的 ProfileView 具有 200 x 200 點(diǎn)的固有內(nèi)容大小,則 frame(minWidth:idealWidth:maxWidth:minHeight:idealHeight:maxHeight:alignment:) (英文) 視圖修飾符將 500 點(diǎn)的最大寬度應(yīng)用于 ScrollView (英文) 會(huì)導(dǎo)致 Stack 在其內(nèi)部滾動(dòng)。

有關(guān)如何使用 Stack 將視圖組合在一起的介紹,請(qǐng)參閱“使用 Stack 視圖構(gòu)建布局”。

為你的數(shù)據(jù)創(chuàng)建重復(fù)視圖

使用 ForEach (英文) 來(lái)為你 App 中的數(shù)據(jù)創(chuàng)建重復(fù)視圖。從 profiles 數(shù)組中的一個(gè)個(gè)人資料數(shù)據(jù)列表中,在 HStack (英文) 內(nèi)使用 ForEach (英文) 為數(shù)組中的每個(gè)元素創(chuàng)建一個(gè) ProfileView。

 ScrollView(.horizontal) {  HStack {  ForEach(profiles) { profile in  ProfileView(profile: profile)  }  } } .frame(maxWidth: 500)

注釋

當(dāng)你使用 ForEach (英文) 時(shí),你迭代的每個(gè)元素必須經(jīng)過唯一標(biāo)識(shí)??梢允乖刈駨?Identifiable (英文) 協(xié)議,或者將一個(gè)鍵路徑傳遞到唯一的標(biāo)識(shí)符作為 init(_:id:content:) (英文) 的 id 參數(shù)。

考慮對(duì)大量視圖使用惰性堆疊

HStack (英文)、VStack (英文) 和 ZStack (英文) 三個(gè)標(biāo)準(zhǔn) Stack 視圖在顯示時(shí)都會(huì)載入它們的所含視圖層次結(jié)構(gòu),而一次性載入大量視圖會(huì)導(dǎo)致運(yùn)行時(shí)性能變慢。

在以上示例中,ProfileView 是一個(gè)包含嵌套 Stack 視圖、文本標(biāo)簽和圖像視圖的復(fù)合視圖。一次性載入大量個(gè)人資料會(huì)導(dǎo)致明顯的速度變慢。

隨著 Stack 中的視圖數(shù)量增加,請(qǐng)考慮使用 LazyHStack (英文) 和 LazyVStack (英文) 代替 HStack (英文) 和 VStack (英文)。惰性 Stack 按需載入和渲染子視圖,從而在載入大量子視圖時(shí)可提供顯著的性能提升。

Stack 視圖和惰性 Stack 具有相似的功能,可能給人感覺它們能夠互換,但是,它們?cè)诓煌闆r下有各自的優(yōu)勢(shì)。Stack 視圖會(huì)一次性載入所有子視圖,布局性能快且可靠,因?yàn)橄到y(tǒng)在載入每個(gè)子視圖時(shí)就知道它們的大小和形狀。惰性 Stack 會(huì)為了性能而損失一定程度的布局正確性,原因是系統(tǒng)僅在子視圖可見時(shí)才會(huì)計(jì)算它們的幾何結(jié)構(gòu)。

在選擇要使用的 Stack 視圖類型時(shí),始終先選擇標(biāo)準(zhǔn) Stack 視圖,并且僅在對(duì)代碼進(jìn)行性能分析后證明值得提升性能時(shí)才切換到惰性 Stack。

進(jìn)行性能分析以發(fā)現(xiàn)性能問題

考慮要使用哪種 Stack 時(shí),請(qǐng)使用 Instruments 工具對(duì)你的 App進(jìn)行性能分析,以確定用戶界面代碼中將有大量視圖載入 Stack 的區(qū)域。

若要對(duì) SwiftUI 視圖載入進(jìn)行性能分析,請(qǐng)打開 Instruments 工具,方法是在 Xcode“Product”(產(chǎn)品) 菜單中選擇“Profile”(性能分析),然后選取 SwiftUI 性能分析模板。該模板將載入四個(gè) instrument:View Body、View Properties、Core Animation Commits 和 Time Profiler。這些 instrument 的組合為你尋找加快 App 性能的機(jī)會(huì)提供了一個(gè)不錯(cuò)的起點(diǎn)。

注釋

切勿使用 iOS 模擬器對(duì)你的代碼進(jìn)行性能分析。請(qǐng)始終使用真實(shí)設(shè)備進(jìn)行性能測(cè)試。

對(duì)上述代碼進(jìn)行性能分析時(shí),View Body instrument 顯示 1,000 個(gè) ProfileView 實(shí)例同時(shí)作為 HStack (英文) 載入內(nèi)存。隨著系統(tǒng)載入每個(gè)個(gè)人資料,你還會(huì)看到相同數(shù)量的 Image (英文) 視圖載入。

在此情況下,解決方案是將 HStack (英文) 替換為 LazyHStack (英文),如以下代碼所示:

 ScrollView(.horizontal) {  LazyHStack {  ForEach(profiles) { profile in  ProfileView(profile: profile)  }  } } .frame(maxWidth: 500)

運(yùn)行另一次跟蹤會(huì)顯示最初載入的視圖數(shù)量急劇下降,因?yàn)橹挥兴膫€(gè)啟動(dòng)的 ProfileView 實(shí)例可見。你還可以在“Total Duration”(總時(shí)間長(zhǎng)度) 列中看到相應(yīng)的下降。

有關(guān)使用 Instruments 工具的更多信息,請(qǐng)參閱提升 App 的性能。


當(dāng)前文章:創(chuàng)新互聯(lián)IOS教程:創(chuàng)建高性能的可滾動(dòng)Stack
當(dāng)前地址:http://m.5511xx.com/article/cohjpjg.html