• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • SwiftUI 動畫之如何檢測動畫結束并執行調用 (教程含源碼)

    標簽: 隊列  java  多線程  并發編程  設計模式

    實戰需求

    有時候我們需要在動畫結束后執行有些操作,那如何才能判斷動畫是否結束,并進行回調呢?

    本文價值與收獲

    看完本文后,您將能夠作出下面的界面

    截屏2020-08-13 下午5.12.06.png
    Jietu20200813-171228.gif

    看完本文您將掌握的技能

    • 掌握 gesture
    • 掌握 DragGesture
    • 掌握 onChanged
    • 掌握 onEnded
    • 掌握 withAnimation
    • 掌握 DispatchQueue.main.asyncAfter

    基礎知識

    DispatchQueue

    用于管理應用程序主線程或后臺線程上串行或并行執行的任務的類。

    class DispatchQueue : DispatchObject

    總覽

    調度隊列是FIFO隊列,您的應用程序可以以塊對象的形式向其提交任務。調度隊列可以串行或并行執行任務。提交給調度隊列的工作在系統管理的線程池上執行。除了代表應用程序主線程的調度隊列之外,系統無法保證它使用哪個線程來執行任務。

    您可以同步或異步計劃工作項。當您同步安排工作項時,您的代碼將等到該項目完成執行。當您異步調度工作項時,您的代碼將繼續執行,而工作項將在其他地方運行。

    重要,嘗試在主隊列上同步執行工作項會導致死鎖。

    避免過多的線程創建

    在設計用于并發執行的任務時,請勿調用會阻塞當前執行線程的方法。當由并發調度隊列調度的任務阻塞線程時,系統會創建其他線程來運行其他排隊的并發任務。如果有太多任務阻塞,則系統可能會耗盡您的應用程序的線程。

    應用程序消耗太多線程的另一種方法是創建過多的私有并發調度隊列。因為每個調度隊列都消耗線程資源,所以創建其他并發調度隊列會加劇線程消耗問題。代替創建私有并發隊列,將任務提交到全局并發調度隊列之一。對于串行任務,請將串行隊列的目標設置為全局并發隊列之一。這樣,您可以在最小化創建線程的單獨隊列數量的同時,維護隊列的序列化行為。


    withAnimation(::)

    版權聲明:本文為iCloudEnd原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/iCloudEnd/article/details/108180541

    智能推薦

    SwiftUI動畫之基于transition和animation實現延時進出動畫(超酷動畫教程含源碼)

    一、實戰需求 需要實現通過按鈕控制視圖顯示與隱藏,并且要有延遲效果,SwiftUI該如何實現? 二、本文價值與收獲 看完本文后,您將能夠作出下面的界面 三、基礎知識 1、animation(_?? 修飾器給視圖賦予動畫效果 給視圖增加動畫效果 參數: animation view里面應用的動畫類型 返回值: 封裝該視圖并將動畫應用于該視圖中 特性: 建議最好在葉子視圖使用animation而不是容...

    SwiftUI 內功之如何將函數存儲到數組并進行調用 (教程含源碼)

    實戰需求 SwiftUI 內功之如何將函數存儲到數組并進行調用 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握數組函數 掌握數組函數調用 實戰代碼...

    SwiftUI List 設置行點擊高亮動畫效果(教程含源碼)

    實戰需求 SwiftUI List 設置行點擊高亮動畫效果? 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握background 掌握onTagGesture 掌握animation 掌握延時設置動畫 基礎知識 List 一個容器,用于顯示排列在單列中的數據行。 background(_:alignment:) 將給定視圖分層放置在該視圖之后。...

    SwiftUI macOS 教程之如何使用TableView制作多列表格(教程含源碼)

    實戰需求 SwiftUI macOS 如何使用TableView制作多列表格,并且實現內嵌TextField,實現數據采集。 本文價值與收獲 看完本文后,您將能夠作出下面的界面 基礎知識 NSTableView 一組相關記錄,顯示在代表單個記錄的行中和代表那些記錄的屬性的列中。 使用教程 表格視圖以滾動視圖顯示。從macOS v10.7開始,您可以使用NSView對象(最常用的自定義對象)代替單元...

    SwiftUI源碼之數據選擇Picker彈出式UI(教程含源碼)

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握Picker基礎使用 類似alert的調用模式 獲取響應數據 學會使用ViewModifier 學會fileprivate 學會使用extention 代碼 1、主頁面代碼...

    猜你喜歡

    SwiftUI macOS 如何新建一個Windows窗口并顯示 (經典教程含源碼)

    SwiftUI macOS 如何新建一個Windows窗口并顯示 教程含源碼 實戰需求 SwiftUI macOS 如何新建一個Windows窗口并顯示 ? 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握創建新Windows方法 實現SwiftUI原生調用 基礎知識 NSHostingController 托管SwiftUI視圖層次結構的AppKit視圖控制器。 ...

    SwiftUI 如何繪制多行多列表格并支持滾動(教程含源碼)scrollview

    實戰需求 SwiftUI 如何繪制多行多列表格并支持滾動 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 ScrollView 掌握 ForEach 基礎知識 ScrollView 一個可以滾動的視圖 滾動視圖在可滾動內容區域內顯示其內容。 主題 創建滾動視圖 1、init(Axis.Set, showsIndicators: Bool, con...

    SwiftUI 實戰之調用內置字典組件(教程含源碼UIReferenceLibraryViewController)

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 選擇字典 下載字典 網絡查詢 代碼...

    SwiftUI 繪圖之 繪制一組線段并動態添加Path (教程含源碼)

    實戰需求 SwiftUI 繪圖之 繪制一組線段并動態添加Path 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握 Path 繪制線段 掌握 for 循環基礎使用 掌握 stroke 基礎知識 stroke(style: StrokeStyle) 返回一個新的形狀,該形狀是self的描邊副本,使用style的內容定義描邊特征。...

    SwiftUI 實戰之如何設置倒計時時間間隔(教程含源碼)

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 基礎知識 UIDatePicker.Mode.countDownTimer 顯示小時和分鐘值的模式,例如[1 | 53]。 應用程序必須將計時器設置為以適當的間隔觸發,并將日期選擇器設置為秒數記下。 代碼...

    精品国产乱码久久久久久蜜桃不卡