Как я могу придать тексту вид кнопки в SwiftUI?

Я пытаюсь создать NavigationStack, в котором вместо ссылок есть кнопки.

Хотя я знаю, как сделать текст похожим на кнопку, я не уверен, как придать ему изменяющийся внешний вид кнопки при ее нажатии.

В приведенном ниже коде используются две переменные @State, чтобы можно было уменьшить размер поддельной кнопки. Но со всеми различными перестановками .onTapX я не могу найти правильную вариант для изменения переменных @State при нажатии кнопки.

Спасибо

import SwiftUI

struct MainMenuWithStack: View {
    
    @State var butW : CGFloat = 150
    @State var butH : CGFloat = 75
    @State var curTG = "--"
    var body: some View {
        
        NavigationStack{
            
            VStack(spacing: 5) {
                
                NavigationLink(destination: HomePage()){
                    Text("Home")
                        .foregroundStyle(.white)
                        .font(.title)
                        .frame(width: butW, height: butH)
                        .background(.blue)
                        .cornerRadius(10)
                }
            }
        }
    }
}


#Preview {
    MainMenuWithStack()
}

Найдите «SwiftUI ButtonStyle»

jnpdx 15.05.2024 23:43

Попробуйте .buttonStyle(.borderedProminent)

Benzy Neez 15.05.2024 23:43

@BenzyNeez Но я здесь не использую настоящие кнопки. Разве мне не придется следить за взаимодействием пользователей и самому менять ложную кнопку? Кроме того, у меня сложилось впечатление, что я не могу использовать кнопки в стеке навигации. Очевидно, если я ошибаюсь, мне бы хотелось знать

Bartender1382 15.05.2024 23:48
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
3
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Модификатор .buttonStyle можно применить к NavigationLink точно так же, как и к Button.

Следующее очень близко к стилю в вашем примере:

NavigationStack{
    VStack(spacing: 5) {
        NavigationLink(destination: HomePage()) {
            Text("Home")
                .font(.title)
                .padding()
        }
    }
    .buttonStyle(.borderedProminent)
}

Вы также можете реализовать свои собственные настройки ButtonStyle, если хотите инкапсулировать все стили в одном месте. Это позволяет применять разные стили при нажатии кнопки, проверяя значение свойства ButtonStyleConfiguration.isPressed.

Другие вопросы по теме