Как убрать или скрыть метку переключателя в SwiftUI - PullRequest
0 голосов
/ 28 июня 2019

Я ищу способ удалить метку Toggle в SwiftUI ...

Я пробовал с ToggleStyle, но, похоже, это не правильный путь:

Toggle(isOn: $isBlinky) {
    Text("DO NOT DISPLAY").color(.red)
}
.toggleStyle(.switch)

Поскольку метка, кажется, включена в сам тип (struct Toggle<Label>), возможно, не будет способа иметь только один переключатель ...

Кстати, если я использую Text(""), а затем scaledToFit() переключатель все еще немного вправо и не в самом центре ...

В любом случае, если у кого-то есть идея!

PS: В ожидании решения я завернул старый добрый UISwitch, но это не идея ...

struct Switch : UIViewRepresentable {
    @Binding var isOn : Bool

    func makeUIView(context: Context) -> UISwitch {
        let uiView = UISwitch()
        uiView.addTarget(
            context.coordinator,
            action: #selector(Coordinator.didChange(sender:)),
            for: .valueChanged)

        return uiView
    }

    func updateUIView(_ uiView: UISwitch, context: Context) {
        uiView.isOn = isOn
    }

    // MARK:- Coordinator

    func makeCoordinator() -> Switch.Coordinator {
        return Coordinator(self)
    }

    class Coordinator: NSObject {
        var control: Switch

        init(_ control: Switch) {
            self.control = control
        }

        @objc func didChange(sender: UISwitch) {
            control.isOn = sender.isOn
        }
    }
}

1 Ответ

0 голосов
/ 28 июня 2019

Чтобы настроить Toggle, вы можете бросить свой собственный ToggleStyle.

struct CustomToggleStyle: ToggleStyle {

    func body(configuration: Toggle<Self.Label>) -> Text {
        // Define look and feel for the toggle
        Text("Text toggle (?)")
    }

    typealias Body = Text

}

extension StaticMember where Base: ToggleStyle {

    static var custom: CustomToggleStyle.Member {
        return .init(CustomToggleStyle())
    }

}

и используйте его вот так

.toggleStyle(.custom)

Кажется, это способ сделать это, , но API еще не готов !

configuration не раскрывает значения, которые нам нужны для построения переключателя.

По dump я вижу, что у него есть несколько полезных свойств ...

SwiftUI.Toggle<SwiftUI.ToggleStyleLabel>
  - label: SwiftUI.ToggleStyleLabel
  - state: SwiftUI.ToggleState.off
  - setOn: (Function)

... но они кажутся частными.

Я обновлю этот ответ, как только узнаю больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...