• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • UIKit與swiftUI 交互

    標簽: swift與swiftUI  swift

    UIKit與swiftUI 交互

    運用swiftUI寫界面非常迅速且酷炫。大大減少了曾經在UIKit中的代碼量。
    不過有時候可能你還會需要用到UIKit,但是你又想用swiftUI做界面,此時就考慮到二者交互的問題了。

    UIViewControllerRepresentable

    在swiftUI中提供了一個UIViewControllerRepresentable協議
    我們可以用它作為UIKit 與swiftUI的橋接
    在這里插入圖片描述

    第一步:

    你依然可以像往常一樣,新建一個swift文件,把他命名為viewController 然后導入UiKit ,然后再讓它繼承UIViewController 重寫父類的viewDidLoad()方法,你也可以往里面隨便添點東西,為后面驗證做準備,just like this…在這里插入圖片描述

    第二步 橋接

    第二步就是在你的swiftUI文件中寫一個結構體連接你剛創建的viewController 他需要遵循并實現UIViewControllerRepresentable這個協議

    第三步 應用

    接下來直接在你swiftUI中結構體中調用第二步的結構體就OK了第二步與第三步

    顯示效果如圖

    在這里插入圖片描述

    代碼如下:

    viewController.swift 文件中:

    import Foundation
    import UIKit
    class viewController: UIViewController{
        override func viewDidLoad() {
            super.viewDidLoad()
            self.view.backgroundColor = .brown
            let viewDemo = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 100))
            viewDemo.backgroundColor = .green
            self.view.addSubview(viewDemo)
            
        }
    }
    
    

    ConventView.swift 文件中

    //UIKit 橋接
    struct UIBridging: UIViewControllerRepresentable {
        //這個UIViewControllerType你要接哪個就是哪個,在這里就是viewController
        typealias UIViewControllerType = viewController
        //必須實現的方法,當swiftUI要顯示view時,會調用這個方法。返回值就是當前需要顯示的類
        func makeUIViewController(context: UIViewControllerRepresentableContext<UIBridging>) -> UIBridging.UIViewControllerType {
            return viewController()
        }
        //更新UIViewController時會調用此方法
        func updateUIViewController(_ uiViewController: viewController, context: UIViewControllerRepresentableContext<UIBridging>) {
        }
    }
    struct ContentView: View{
        var body: some View {
            UIBridging()
        }
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    
    

    注:你也可以寫在一個文件中,但后期為了看著方便,簡介,還是分開寫比較好一些

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

    智能推薦

    ClickHouse與HDFS交互

    ClickHouse與Hadoop的兼容性不好,數據交互還是依靠將數據導出為固定格式的文件,然后將文件導入到ClickHouse中。 從HDFS讀取數據 從HDFS上讀取數據類似于將HDFS作為外部存儲,然后去拉取HDFS上的數據。 需要用到一個新的引擎HDFS: 但是數據實際上還是在HDFS上,如果關掉HDFS,他就會報錯。 從HDFS導入數據 我們想要將讀取到的數據保存到本地,只需要將讀取數據...

    Qt與Excel交互

    寫在前面  之前對與Qt和Excel、Word的交互不太了解,知道有這么回事,但是具體怎么寫和涉及到那些類不太清楚。  結果工作中要用到,因為不太熟悉這方面,所以被另外一個“同事”接下了客戶發布的“賞金任務”,感到遺憾,失去了一個在工作中鍛煉自己和表現自己的機會。  不過沒關系,自己看看和了解一下基本操作還是可以滴。 Q...

    mysql與python交互

    安裝MySQL第三方庫 打開pycharm ,點擊文件 setting設置,在點擊左邊的紅色框,然后點擊右邊的加號,會出現一個對話框 然后輸入pymysql ,然后紅色的小圈不用打鉤,點擊下面的紅色框等待安裝成功提示就好了 python中使用mysql 步驟: conn=connect(參數列表) 參數host:連接的mysql主機,如果本機是’localhost’ 參數p...

    MySQL與python交互

    mysql與python交互 步驟: 開始–>建立連接–>獲取游標–>操作–>關閉游標–>關閉鏈接–>結束 引入模塊 在py文件中引入pymysql模塊 Connection 對象 用于建立與數據庫的連接 創建對象:調用connect()方法 參數host:連接的mysql主機,如果本機是&...

    Android與js交互

    在混合開發中,我們的webView不僅僅是用來展示網頁,還可能需要跟網頁進行交互,這么一來就需要android調用網頁中的js方法或者js調android本地的方法。 二話不說先上個圖: 對webview使用還不熟悉的同學可以先看看這個篇博客webView的簡單使用 Android調用網頁中的js方法步驟 1.首先是基本的設置 2.在網頁中創建要被調用的方法 3.通過 webView.loadUr...

    猜你喜歡

    Mysql 與 Python 交互

    一、準備數據 創建數據表 插入數據 二、SQL練習 2.1 sql語句強化 2.2 商品數據表的操作 三、數據庫設計 四、python操作mysql步驟 4.1 connection對象 用于建立與數據庫的連接 創建對象:調用connect()方法 conn=connect(參數列表) 參數host:連接的mysql主機,如果本機是’localhost’ 參數port:連接...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

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