SwiftUI按钮不考虑最小宽度

ahy6op9u  于 2023-03-22  发布在  Swift
关注(0)|答案(2)|浏览(353)
Button {
        isPresented = false
    } label: {
        Text("Go")                
    }
    .frame(minWidth:400)  //ignored
    .tint(.blue)
    .buttonStyle(.borderedProminent)

这正常吗?

z0qdvdin

z0qdvdin1#

您正在创建新的框架.frame(minWidth:400)周围的按钮,这发生在按钮样式应用之前。

iOS版本:16.0
Xcode版本:14.0
您的输出代码:

Button {
            
        } label: {
            Text("Go")
            
        }
        .frame(minWidth: 200) 
        .border(.pink)
        .buttonStyle(.borderedProminent)

输出:

为了考虑最小框架宽度,我们需要在按钮标签的内容中应用框架前按钮样式,如下所示:

更新代码:

Button {
        
    } label: {
        Text("Go")
            .frame(minWidth: 200) // --> need to add frame here
        
    }
    
    .border(.pink)
    .buttonStyle(.borderedProminent)

输出:

gg58donl

gg58donl2#

这正常吗?

**是的。**在SwiftUI中工作时,你必须始终记住,每个修饰符(如.frame().tint().buttonStyle)都是一个返回some View的方法。这意味着你应用修饰符的顺序很重要。当你无法让修饰符做你期望的事情时,这通常是因为你应用修饰符的顺序不对,而不是你想要达到的效果。

相关问题