В swiftui, как мне увеличить высоту кнопки? - PullRequest
7 голосов
/ 11 декабря 2019

Как вы можете видеть на скриншоте, высота кнопки не регулируется, чтобы соответствовать размеру текста, из-за чего она выглядит некрасиво. Как можно увеличить высоту кнопок, чтобы она не выглядела глупо. У меня вопрос, как мне увеличить высоту кнопок в 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)
                    }
                }
            }
        }
    }
}

Not nicely looking window

Ответы [ 2 ]

3 голосов
/ 11 декабря 2019

Вам просто нужно установить 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())

custom button

0 голосов
/ 11 декабря 2019

Вам нужно изменить высоту стека

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)
                }
            }
    }
}
...