如何在 SwiftUI 中删除或隐藏 Toggle 的标签

Zap*_*hod 15 ios swift swiftui

我正在寻找一种方法来删除ToggleSwiftUI中 a 的标签...

我试过,ToggleStyle但似乎不是正确的方法:

Toggle(isOn: $isBlinky) {
    Text("DO NOT DISPLAY").color(.red)
}
.toggleStyle(.switch)
Run Code Online (Sandbox Code Playgroud)

由于标签似乎包含在类型本身 ( 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
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ens 28

SwiftUI 1.0

使用 labelsHidden 修饰符隐藏标签/标题

这是应该如何做的。

Toggle("Turn alarm on", isOn: $isToggleOn)
    .labelsHidden() // Hides the label/title
Run Code Online (Sandbox Code Playgroud)

注意:即使标签被隐藏,您仍应添加一个以方便访问。

例子:

没有标签的切换示例


小智 6

您可以使用 .labelsHidden() 修饰符隐藏标签:

Toggle(isOn: $switchValue) {}
      .labelsHidden()
Run Code Online (Sandbox Code Playgroud)