• <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實戰之form制作登錄界面

    本文價值與收獲

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

    41085-0b985b74462a64b4.gif
    Jietu20200420-164644.gif

    看完本文您將掌握的技能

    • Form基礎使用
    • 融合TextField
    • 使用枚舉類型enum
    • 掌握Toggle使用

    憑借對聲明式用戶界面的優勢,SwiftUI為我們提供了一種構建表單的絕妙機制Form,從而解決了我們收集信息基礎需求。

    SwiftUI的Form幫我們解決了多控件的綜合使用問題。雖然我們可以自己搭建表單界面,但是需要處理很多繁瑣的自適應和布局問題,Form可以與輸入、標簽、按鈕等控件更好地協同工作。

    如果陷入再復雜界面布局中,那么您一定會喜歡上Form。SwiftUI可以動態地調整布局,使其可以根據您的代碼在哪個平臺上為我們自動創建全新的屏幕,從而完全消除了從視覺上的不協調。這意味著我們描述了我們想要的東西,而SwiftUI找出了使之在當前平臺上實現的慣用方式。

    表單是常規容器,就像VStack一樣,因此您可以根據自己的目的在兩者之間自由切換。

    實戰應用

    下面我們制作一個可以用戶注冊界面,該界面可以實現用戶名、密碼和郵箱的采集工作。

    第一步,我們創建個項目

    項目創建請參考,《SwiftUI零基礎之開發第一步創建個項目》

    第二步,界面搭建

    1、創建三個@State變量

    struct ContentView : View {
    
        @State private var name: String = ""
        @State private var email: String = ""
        @State private var password: String = ""
    
        var body: some View {
            Text("Hello World!")
        }
    }
    

    用大白話講,@State就是一個標簽,貼之前視圖是不可以修改這個值;貼了之后,只要你修改這變量,界面就會跟著同步修改。這個是現代界面語言都是支持的特性。 更多State介紹請參考《SwiftUI 基礎之@State 有什么用》

    2、增加導航條

    struct ContentView : View {
    
        @State private var name: String = ""
        @State private var email: String = ""
        @State private var password: String = ""
    
        var body: some View {
            NavigationView {
                Form {
                    Text("Hello World!")
                }
                .navigationBarTitle(Text("注冊界面"))
            }
        }
    }
    
    41085-7a6f9d3e86ae4093.png
    image.png

    如您所見,form會自動創建一個list,list中的每個view都將是一個單元格,就像此處的文本“ Hello World!”一樣。

    在此表單中,我們將刪除Hello World,而是添加一些實際代碼。界面將分為三個部分。我們將其中一個用于name和email字段,另一個用于密碼,最后一個用于數據校驗與提交。

    Section有3個參數:頁眉,頁腳和內容(視圖)。在這里,我們將為我們的前兩個部分設置標題:

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

    智能推薦

    SwiftUI數據選擇之Picker和Form完美配合

    本文價值與收獲 看完本文后,您將能夠作出下面的界面 [email protected] Jietu20200419-175711.gif 看完本文您將掌握的技能 掌握Picker基礎使用 掌握Form基礎 Picker和Form聯動 代碼 推薦文章 SwiftUI一篇文章全面掌握Picker,解決數據選擇(教程和源碼) SwiftUI實戰之用Picker做個優雅的菜單 Swif...

    Vue制作一個登錄界面(javaEE大作業實戰)

    項目基本目錄結構: global.css ,設置 html,body,以及 #app區域所有的高度占比都是 100% router 的配置 main.js的配置 登錄界面: 界面如圖所示:...

    SwiftUI 實戰手勢之制作個可拖拽可全屏的內容卡片 slide-over card

    SwiftUI應用中的常見界面模式是內容卡片,該卡片可滑到其他內容上,無論是最小化的內容,還是半屏或全屏位置。例如,手機里面的地圖和股票應用。這里效果如何實現呢,下面讓我們來制作個浮動面板吧 本文價值與收獲 看完本文后,您將能夠作出下面的界面 [email protected] Jietu20200501-072243.gif 看完本文您將掌握的技能 實現卡片拖拽和全屏 實現動...

    SwiftUI 實戰手勢之制作個可拖拽可全屏的內容卡片 slide over card

    SwiftUI應用中的常見界面模式是內容卡片,該卡片可滑到其他內容上,無論是最小化的內容,還是半屏或全屏位置。例如,手機里面的地圖和股票應用。這里效果如何實現呢,下面讓我們來制作個浮動面板吧 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 實現卡片拖拽和全屏 實現動畫效果 掌握自定義struct的方法 掌握ViewModifier使用 掌握MapKit技巧,實現地圖展示...

    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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

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