如何在SwiftUI中增加按钮的大小?(多平台项目)
我正在尝试在多平台项目中增加SwiftUI中的按钮(Xcode 12.5)的大小:如何在SwiftUI中增加按钮的大小?(多平台项目),swiftui,Swiftui,我正在尝试在多平台项目中增加SwiftUI中的按钮(Xcode 12.5)的大小: Button("Click me") { // Perform action here } .frame(width: 100, height: 100) .background(Color.yellow) .buttonStyle(BorderlessButtonStyle()) 检查后,我发现我可以样
Button("Click me") {
// Perform action here
}
.frame(width: 100, height: 100)
.background(Color.yellow)
.buttonStyle(BorderlessButtonStyle())
检查后,我发现我可以样式的按钮,但我不能想出如何使点击框更大。因此,整个黄色框架接收单击操作,而不仅仅是标签
编辑:
抽头区域问题在这里得到了很好的解释:
但解决方案是在按钮中添加一个元素,并改变按钮的大小,这只在iOS项目中起作用。在多平台项目中,按钮的框架大小错误:
该按钮无法识别该位置上的修改器。解决办法是:
Button(action: {}, label: {
Text("Click me")
.frame(width: 100, height: 100)
.background(Color.yellow)
})
这里有一个可能的解决方案 适用于iOS 适用于macOS(macOS版本也适用于iOS版本)
我发现,添加contentShape似乎可以解决这个问题:
Button(action: doSomething) {
Text("Click me")
.frame(width: 100, height: 100)
.contentShape(Rectangle())
}
.background(Color.yellow)
.buttonStyle(PlainButtonStyle())
使用比例效应,但我仍然不清楚你到底需要什么。我想要按钮啤酒。令人沮丧的是,在当前版本中,这是多么困难。因为旧版本中的所有示例都不起作用。比例效应确实产生了一个不同的问题。我将把它添加到问题中。我还发现了一个在当前版本中有效的答案。可能是
.buttonStyle(PlainButtonStyle())
-它去掉了所有默认样式。您测试过这个吗?与大多数其他解决方案一样,此解决方案的填充错误。这将导致我发布的第二张图像。@kiatra,在iOS中测试没有问题。你是想在macOS中实现这一点吗?@Seugjun,我已经在一个多平台项目中进行了测试。您的回答是正确的,它确实在iOS平台项目中起作用。@kiatra hi我更新了我的答案,将macOS也包括在内,您能再次检查吗?此解决方案仅在iOS上起作用。我编辑了这个问题,补充说我做了一个多平台项目。
Button(action: {
//add actions at here
}) {
VStack {
Text("Name")
}.frame(width: 100, height: 100)
.background(Color.yellow)
.cornerRadius(20)
}
struct ContentView: View {
var body: some View {
VStack{
Button(action: {
//add actions at here
}) {
VStack {
Text("Button Name")
}.frame(width: 100, height: 100)
.background(Color.yellow)
.cornerRadius(20)
}.buttonStyle(CustomButtonStyle())
}
}
}
struct CustomButtonStyle: ButtonStyle {
func makeBody(configuration: Self.Configuration) -> some View {
configuration.label
.foregroundColor(Color.blue)
.cornerRadius(10.0)
.padding()
}
}
Button(action: doSomething) {
Text("Click me")
.frame(width: 100, height: 100)
.contentShape(Rectangle())
}
.background(Color.yellow)
.buttonStyle(PlainButtonStyle())