簡體   English   中英

SwiftUI:如何僅將修飾符應用於特定元素?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM