.Clipped() 不适用于 Pickers SwiftUI

kyr*_*ers 2 xcode datepicker picker ios swiftui

我需要创建一个包含 2Pickers和 2 的视图DatePickers

\n

为了避免它们相互重叠,我使用了.clipped(). 然而,这是行不通的。

\n

我可以成功调整 的大小pickers,但无法将“选择区域”限制为其frame大小。

\n

这是我的代码:

\n
VStack(spacing: 10) {\n        Picker(selection: self.$dayTypeSelectedIndex, label: Text("")) {\n            ForEach(0 ..< self.dayTypes.count, id: \\.self) {\n                Text(self.dayTypes[$0])\n                    .foregroundColor(Color.black)\n            }\n        }\n        .pickerStyle(SegmentedPickerStyle())\n        .labelsHidden()\n        .clipped()\n        \n        Spacer()\n        \n        Group {\n            DatePicker("", selection: self.$dateIntervalStart, displayedComponents: .hourAndMinute)\n                .labelsHidden()\n                .colorInvert()\n                .colorMultiply(Color.black)\n                .frame(maxHeight: 50)\n                .clipped()\n            \n            Spacer()\n            \n            Text("\xc3\xa0s")\n                .foregroundColor(Color.black)\n            \n            Spacer()\n            \n            DatePicker("", selection: self.$dateIntervalEnd, displayedComponents: .hourAndMinute)\n                .labelsHidden()\n                .colorInvert()\n                .colorMultiply(Color.black)\n                .frame(maxHeight: 50)\n                .clipped()\n        }\n        \n        Spacer()\n        \n        HStack {\n            Picker(selection: self.$tripNotificationDelta, label: Text("")) {\n                ForEach(0...60, id: \\.self) {\n                    Text($0 < 10 ? "0\\($0)" : "\\($0)")\n                        .foregroundColor(Color.black)\n                }\n            }\n            .labelsHidden()\n            .frame(maxWidth: 50, maxHeight: 50)\n            .clipped()\n\n            Text("mins before trip")\n                .foregroundColor(Color.black)\n        }\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我究竟做错了什么?

\n

我正在使用 XCode 12。此外,该界面是为未运行 iOS 14 的设备构建的。

\n

谢谢!

\n

kyr*_*ers 5

所以,我想通了。就放在.compositingGroup()前面.clipped()。像这样的东西:

            DatePicker("", selection: self.$dateIntervalEnd, displayedComponents: .hourAndMinute)
            .labelsHidden()
            .colorInvert()
            .colorMultiply(Color.black)
            .frame(maxHeight: 50)
            .compositingGroup()
            .clipped()
Run Code Online (Sandbox Code Playgroud)