[英]SwiftUI: How to apply modifiers only to specific elements?
所以我有這個非常簡化的代碼,我基本上有一個帶有自定義修飾符的 HStack。
我的問題是,我怎樣才能將修飾符保留在 HStack 上,但不要讓修飾符應用於 HStack 內的按鈕?
在這種情況下,我可以直接將修飾符應用於文本字段,但正如我所提到的,這是我的代碼的一個非常簡化的版本,所以我們假設修飾符必須在 HStack 上
這是代碼
HStack{
TextField("Enter a Froot", text: self.$searchTxt)
Button(action: {print("Is cancelled")}){
Text("Cancel")
}
}.modifier(TFModifier())
這是修改器
struct TFModifier : ViewModifier {
func body(content: Content) -> some View {
content.padding()
.background(Color("TesterColor"))
.overlay(
RoundedRectangle(cornerRadius: 20)
.stroke(Color.black.opacity(0.01), lineWidth: 4)
.shadow(color: Color("TesterColor3"), radius: 6, x: 5, y: 5)
.clipShape(RoundedRectangle(cornerRadius: 20))
)
}
}
在您的情況下,ViewModifier 認為內容是整個 HStack,這實際上是您最近告訴 SwiftUI 將我的 HStack 作為內容並作為內容使用 TFModifier 修改它! 在這種情況下,沒有辦法告訴 SwiftUI 把 Button 排除在計算之外! 這是100%不可能的! SwiftUI 不像TFModifier那樣關心你的命名,它只關心傳入的內容! 就像我說的那樣,您將整個 HStack 作為內容提供! 最好想想你想在哪里敏銳地應用這個修改!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.