@Environment 含義
在SwiftUI中俗批,修飾詞的順序會(huì)影響到最后的效果椰拒,所以一定要按照順序來寫UI組件的修飾詞
比如下面這段代碼:
struct ButtonView: View {
var body: some View {
GeometryReader { geo in
Button (action: {
}){
Image(systemName: "heart.fill")
.frame(width: 20, height: 20, alignment: .leading)
Text("這是一個(gè)按鈕")
}
.frame(width: geo.size.width, height: geo.size.height)
.background(.yellow)
.cornerRadius(12)
.buttonStyle(.plain)
}
}
}
顯示效果如下:
image.png
但是如果我們調(diào)整了 `frame 和 cornerRadius 修飾詞的順序:
struct ButtonView: View {
var body: some View {
GeometryReader { geo in
Button (action: {
}){
Image(systemName: "heart.fill")
.frame(width: 20, height: 20, alignment: .leading)
Text("這是一個(gè)按鈕")
}
.cornerRadius(12)
.background(.yellow)
.frame(width: geo.size.width, height: geo.size.height)
.buttonStyle(.plain)
}
}
}
效果變成了這樣子:
image.png
這是因?yàn)樵赟wift 中, View的都是結(jié)構(gòu)體對(duì)象, 在SwiftUI中每個(gè)修飾詞處理以后返回的都是一個(gè)新的對(duì)象
, 而不是像之前在視圖上設(shè)置屬性