如何在 SwiftUI 中使用 SegmentedPickerStyle() 更改选择器的高度?

Fis*_*oon 11 ios swift swiftui

如何在 SwiftUI 中更改选择器框架?

Picker(selection: .constant(1), label: Text("Picker")) {
    Text("Hello").tag(1)
    Text("World").tag(2)
}
.frame(height: 60)
.pickerStyle(SegmentedPickerStyle())
Run Code Online (Sandbox Code Playgroud)

我们希望选择器高度等于60,但事实并非如此。

Asp*_*eri 10

我们可以通过修改后端的拥抱优先级来做到这一点UISegmentedControl,如下所示。此后,.frame修改器(如问题代码中所示)开始按预期工作。

使用 Xcode 13.4 / iOS 15.5 进行测试

演示

extension UISegmentedControl {
    override open func didMoveToSuperview() {
        super.didMoveToSuperview()
        self.setContentHuggingPriority(.defaultLow, for: .vertical)  // << here !!
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 9

没有直接的方法来更改SegmentedPickerStyle选择器的高度,但我们可以使用以下代码缩放它。

Picker(selection: .constant(1), label: Text("Picker")) {
    Text("Hello").tag(1)
    Text("World").tag(2)
}
.frame(height: 60)
.pickerStyle(SegmentedPickerStyle())
.scaledToFit()
.scaleEffect(CGSize(width: 1.5, height: 1.5))
Run Code Online (Sandbox Code Playgroud)

  • 它只是将其放大,不幸的是,这看起来很可怕。 (5认同)