在 SwiftUI 中,如何增加按钮的高度?
Posted
技术标签:
【中文标题】在 SwiftUI 中,如何增加按钮的高度?【英文标题】:In SwiftUI, How do I increase the height of a button? 【发布时间】:2020-04-04 23:45:03 【问题描述】:正如您在屏幕截图中看到的,按钮高度没有调整到适合文本大小,使它看起来很丑。我怎样才能增加按钮的高度,所以它看起来并不愚蠢。我的问题是,如何增加 SwiftUI 中按钮的高度?我正在尝试制作类似于 Minecraft 的游戏的标题屏幕。
struct ContentView: View
var body: some View
GeometryReader geometry in
VStack (spacing: 8)
Text("[Name not disclosed]Craft").font(.system(size: geometry.size.width/8))
Button(action:
)
Text("Singleplayer").font(.system(size: geometry.size.width/20))
.frame(minWidth: geometry.size.width/2)
Button(action:
)
Text("Multiplayer").font(.system(size: geometry.size.width/20))
.frame(minWidth: geometry.size.width/2)
HStack (spacing: 8)
Button(action:
)
Text("Options").font(.system(size: geometry.size.width/20))
.frame(minWidth: (geometry.size.width/4)-16)
Button(action:
exit(EXIT_SUCCESS);
)
Text("Quit Game").font(.system(size: geometry.size.width/20))
.frame(minWidth: (geometry.size.width/4)-16)
【问题讨论】:
见:appcoda.com/swiftui-buttons 在此处查看有关如何创建自定义按钮样式的答案:***.com/questions/58419161/… 【参考方案1】:请尝试以下代码:
Button(action:
//do action
)
Text("SIGN IN")
.frame(width: 200 , height: 50, alignment: .center)
//You need to change height & width as per your requirement
.background(Color.blue)
.foregroundColor(Color.white)
.cornerRadius(5)
输出
【讨论】:
【参考方案2】:如果您只需要 Button
的标题,请使用更简单的初始化程序:
Button("Click me")
// Perform action here
.frame(width: 100, height: 100)
.background(Color.yellow)
请注意 frame
修饰符必须位于 background
之前以使其看起来更大。否则,你看不出区别。
【讨论】:
非常感谢,你拯救了我的一天,你的“注意”部分创造了奇迹! 这种方法的问题是只有文本可以点击,整个黄色背景不是。【参考方案3】:你只需要设置PlainButtonStyle
并按照你的意愿绘制...
例如,这是您的一个按钮:
Button(action:
)
Text("Singleplayer").font(.system(size: geometry.size.width/20))
.padding()
.background(RoundedRectangle(cornerRadius: 8).fill(Color.blue))
.frame(minWidth: geometry.size.width/2)
.buttonStyle(PlainButtonStyle())
【讨论】:
如上所述,框架修饰符应该在背景修饰符之前,否则蓝色不会填满整个框架【参考方案4】:你需要改变栈的高度
struct ContentView: View
@State private var arr = ["String"]
var body: some View
GeometryReader geometry in
VStack (spacing: 8)
Text("[Name not disclosed]Craft").font(.system(size: geometry.size.width/8))
Button(action:
)
Text("Singleplayer").font(.system(size: geometry.size.width/20))
.frame(minWidth: geometry.size.width/2)
Button(action:
)
Text("Multiplayer").font(.system(size: geometry.size.width/20))
.frame(minWidth: geometry.size.width/2)
HStack (spacing: 8)
Button(action:
)
Text("Options").font(.system(size: geometry.size.width/20))
.frame(minWidth: (geometry.size.width/4)-16)
Button(action:
exit(EXIT_SUCCESS);
)
Text("Quit Game").font(.system(size: geometry.size.width/20))
.frame(minWidth: (geometry.size.width/4)-16)
.frame(width: 100, height: 100, alignment: .leading) .background(Color.red)
【讨论】:
这里的几何是什么?以上是关于在 SwiftUI 中,如何增加按钮的高度?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 SwiftUI 在多个屏幕上获取键盘高度并移动按钮
如何使用 SwiftUI 中的图像修复 NavigationView 列表行中增加的高度"