swift 我可以在自定义视图/样式中支持`labelsHidden`修饰符吗?

gwbalxhn  于 11个月前  发布在  Swift
关注(0)|答案(1)|浏览(109)

我有一个自定义的切换样式,但它不与labelsHidden()视图修饰符工作。有可能支持它吗?我知道我可以添加一个属性到我的样式或隐藏它的权利,在身体,但我想知道我是否可以支持正是这个修饰符

8ehkhllq

8ehkhllq1#

您可以在自定义ToggleStyle中使用LabeledContent。当您调用labelsHidden()修饰符时,标签将不可见:

struct CustomToggleStyle: ToggleStyle {
    func makeBody(configuration: Configuration) -> some View {
        LabeledContent(
            content: {
                ZStack {
                    Capsule()
                        .fill(.gray)
                        .frame(width: 64, height: 32)
                    Circle()
                        .fill(configuration.isOn ? .green : .white)
                        .frame(width: 24, height: 24)
                        .animation(.bouncy, value: configuration.isOn)
                        .offset(x: configuration.isOn ? 16 : -16)
                }
                .onTapGesture {
                    configuration.isOn.toggle()
                }
            }, label: {
                configuration.label
            }
        )
    }
}

Toggle("Toggle", isOn: $isOn)
   .toggleStyle(CustomToggleStyle())
   .labelsHidden()

字符串

相关问题