007_swiftui_@State與@Binding實戰中應用
標簽: # swiftUI
我們在上面的文章中,已經頻繁用到了@State
下面構建一個顏色選擇器也是同樣的使用了@State
效果展示
代碼展示
//
// ContentView.swift
// Slots Demo
//
// Created by liuan on 2020/3/31.
// Copyright 2020 liuan. All rights reserved.
//
import SwiftUI
struct ContentView: View {
@State private var red:Double=0;
@State private var green:Double=0;
@State private var blue:Double=0;
var body: some View {
VStack{
Rectangle()
.frame(width:100,height: 100)
.foregroundColor(Color(red:red/255,green:green/255,blue:blue/255))
.border(Color.black,width: 1)
Slider(value:$red,in:0...255,step: 1)
Text("Green:\(Int(red))")
Slider(value:$green,in:0...255,step: 1)
Text("Green:\(Int(green))")
Slider(value:$blue,in:0...255,step: 1)
Text("Green:\(Int(blue))")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
我們可以看到
文章多處使用了
Slider(value:$blue,in:0...255,step: 1)
Text("Green:\(Int(blue))")
我們可以提取出一個控件SliderView。然后頻繁的調用
首選創建一個SwiftUi
選中項目的target后
點擊File
點擊Next
輸入名字后 編輯這個文件
代碼如下
//
// SlideView.swift
// Slots Demo
//
// Created by liuan on 2020/3/31.
// Copyright 2020 liuan. All rights reserved.
//
import SwiftUI
struct SlideView: View {
@Binding var value:Double
var label:String
var body: some View {
VStack{
Slider(value:$value,in:0...255,step: 1)
Text("\(label):\(Int(value))")
}
}
}
struct SlideView_Previews: PreviewProvider {
static var previews: some View {
SlideView(value: Binding.constant(0), label: "Label")
}
}
相當于單獨提取出來了這個控件。下面我們繼續修改主要的核心代碼ContentView.swift
//
// ContentView.swift
// Slots Demo
//
// Created by liuan on 2020/3/31.
// Copyright 2020 liuan. All rights reserved.
//
import SwiftUI
struct ContentView: View {
@State private var red:Double=0
@State private var green:Double=0
@State private var blue:Double=0
var body: some View {
VStack{
Rectangle()
.frame(width:100,height: 100)
.foregroundColor(Color(red:red/255,green:green/255,blue:blue/255))
.border(Color.black,width: 1)
SlideView(value: $red, label: "Red")
SlideView(value: $green, label: "Green")
SlideView(value: $blue, label: "Blue")
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
效果沒變和上面一樣。此處就不粘貼圖片了
智能推薦
SwiftUI實戰之TextField風格自定義與formatters
我想和您談談SwiftUI中的TextField組件。它看起來像是基礎教程,但TextField具有令人興奮的功能,例如UIKit中沒有的即開即用Formatter功能。 TextField formatters TextFieldStyle協議 本文價值與收獲 看完本文后,您將能夠作出下面的界面 看完本文您將掌握的技能 掌握TextField基礎功能 掌握formatters的使用設置不同格式 ...
【設計模式】狀態(State)模式的實現與應用--------Java
狀態(State)模式 根據對象的狀態來更改對象的行為,而不會緊耦合狀態和操作。 1.問題引入(不同時段工作狀態的變化) 用switch-case語句以及if語句:難維護、狀態和動作緊耦合、拓展性和可維護性差。 方法里面職責過多,違背了單一職責原則。任何需求的改動或者增加都需要改動這和方法,違背了開放封閉原則。 2.狀態模式 (將每一個分支都裝到獨立的類中,實現狀態和動作的分離) 適用于狀態轉換的...
Socket實戰與應用
1: Socket之序列化; 讓對象能夠通過socket進行傳輸 需要實現 implements Serializable(序列化的接口) 1.1 ObjectInputStream(ObjectOutputStream) : 讀寫對象; 1.2 序列化 : 能夠讓Java對象,通過流在網絡世界里面進行傳輸; 服務端 序列化過程: 對象->流的過程; 反序列化過程: 流->對象的過程;...
【云星數據---Apache Flink實戰系列(精品版)】:Apache Flink批處理API詳解與編程實戰007--DateSet實用API詳解007
DateSet的API詳解七 sortGroup 執行程序: 執行結果: web ui中的執行效果: minBy 執行程序: 執行結果: web ui中的執行效果: maxBy 執行程序: 執行結果: web ui中的執行效果:...
Excel 2010 SQL應用007 從表中獲取多列和多行
目錄 操作方法 ※關系數據庫中的表※ ※行※ ※列※ 操作方法 數據源表 通過OLE DB方法找到外部數據源,保留“選擇表格”對話框中的默認選擇,單擊“確定”按鈕,**“導入數據”對話框,對話框中勾選“打開文件時刷新...
猜你喜歡
SwiftUI 基礎之@State 有什么用
使用Swift,我們知道所有結構都是值類型,而類是引用類型。這是我們需要牢記的 @State介紹 Swift 5.1 引入的新關鍵詞,官方的定義有些抽象 A persistent value of a given type, through which a view reads and monitors the value. 一個給給定類型的持久化值,通過這個值view可以讀取并監控這個數值。 用...
SwiftUI 2.0 State狀態變化使用onChange監聽
WWDC2020 變化 我們不能再調用@State的didSet,我們需要使用onChange修飾器 本文價值與收獲 看完本文后,您將能夠作出下面的界面 基礎知識 onChange 添加此視圖的修飾符,該修飾符在特定值更改時激發操作 可以使用onChange觸發值更改(如環境鍵或綁定),在主線程上調用onChange。避免在主線程上執行長時間運行的任務。如果需要執行長時間運行的任務以響應值更改,則...
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...