Как указать или изменить интерактивную область кнопки SwiftUI - PullRequest
1 голос
/ 06 августа 2020

Я только начинаю знакомиться с миром SwiftUI, поэтому не знаю, есть ли очевидный ответ на этот вопрос, но в основном я создал кнопку и попытался сделать ее двумя концентричными c кругами. Однако как только я запустил свой код на симуляторе, я обнаружил, что могу щелкнуть буквально в любом месте экрана, и кнопка будет «нажата» (я тестировал это с помощью оператора печати). Я хочу ограничить область нажатия кнопки только областью кругов или, возможно, квадратом, ограничивающим оба круга.

Вот мой код:

    Button(action: {
    print("Do Something")

}) {
    
    Circle().stroke(Color.white, lineWidth: 3)
        .frame(width: 65, height: 65)
        .position(x: x, y: y)
        .overlay(
            Circle().stroke(Color.white, lineWidth: 3)
                .frame(width: 55, height: 55)
                .position(x: x, y: y)
    )

}

Это то, что это выглядит так, когда я нажимаю на него в окне предварительного просмотра в реальном времени:

введите описание изображения здесь

1 Ответ

1 голос
/ 06 августа 2020

Вам следует удалить модификатор .position, потому что он переключает местоположение просмотра (в вашем случае содержимое кнопки) на глобальные координаты.

Вместо этого используйте макет по стеку, как показано ниже

    VStack {
        Spacer()          // << pushes button down
        Button(action: {
            print("Do Something")

        }) {

            Circle().stroke(Color.white, lineWidth: 3)
                .frame(width: 65, height: 65)
                .overlay(
                    Circle().stroke(Color.white, lineWidth: 3)
                        .frame(width: 55, height: 55)
                )

        }
    }
...