Button { isPresented = false } label: { Text("Go") } .frame(minWidth:400) //ignored .tint(.blue) .buttonStyle(.borderedProminent)
这正常吗?
z0qdvdin1#
您正在创建新的框架.frame(minWidth:400)周围的按钮,这发生在按钮样式应用之前。
.frame(minWidth:400)
iOS版本:16.0Xcode版本: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)
gg58donl2#
**是的。**在SwiftUI中工作时,你必须始终记住,每个修饰符(如.frame()或.tint()或.buttonStyle)都是一个返回some View的方法。这意味着你应用修饰符的顺序很重要。当你无法让修饰符做你期望的事情时,这通常是因为你应用修饰符的顺序不对,而不是你想要达到的效果。
.frame()
.tint()
.buttonStyle
some View
2条答案
按热度按时间z0qdvdin1#
您正在创建新的框架
.frame(minWidth:400)
周围的按钮,这发生在按钮样式应用之前。iOS版本:16.0
Xcode版本:14.0
您的输出代码:
输出:
为了考虑最小框架宽度,我们需要在按钮标签的内容中应用框架前按钮样式,如下所示:
更新代码:
输出:
gg58donl2#
这正常吗?
**是的。**在SwiftUI中工作时,你必须始终记住,每个修饰符(如
.frame()
或.tint()
或.buttonStyle
)都是一个返回some View
的方法。这意味着你应用修饰符的顺序很重要。当你无法让修饰符做你期望的事情时,这通常是因为你应用修饰符的顺序不对,而不是你想要达到的效果。