如何在没有额外空间的情况下更改SwiftUI选取器视图大小?
我是SwftUI新手,尝试从SwftUI实现Piker视图 我有一个简单的选择器,里面有一些元素可以显示。我将一个只有50的帧设置为,添加了边框并应用了视图修改器.clipped()。这里是代码:如何在没有额外空间的情况下更改SwiftUI选取器视图大小?,swiftui,Swiftui,我是SwftUI新手,尝试从SwftUI实现Piker视图 我有一个简单的选择器,里面有一些元素可以显示。我将一个只有50的帧设置为,添加了边框并应用了视图修改器.clipped()。这里是代码: import SwiftUI struct ContentView: View { var body: some View { VStack { Picker(selection: .constant(1), label: Text("")
import SwiftUI
struct ContentView: View {
var body: some View {
VStack {
Picker(selection: .constant(1), label: Text("")) {
Text("1").tag(1)
Text("2").tag(2)
Text("3").tag(3)
}
//.clipped()
.labelsHidden()
.frame(width: 50)
.clipped()
}
.border(Color.red)
}
}
一切看起来都很好。但是,当运行应用程序时,问题开始出现,在运行时只需打开调试视图层次结构,如果选择器宽度大得多,您将看到实际大小,我不知道为什么会发生这种情况。请,如果您知道如何修复它,我会经常显示它,谢谢尝试内容形状,它应该限制选择器命中测试仅限于剪裁区域,如
VStack {
Picker(selection: .constant(1), label: Text("")) {
Text("1").tag(1)
Text("2").tag(2)
Text("3").tag(3)
} //.clipped()
.labelsHidden()
.frame(width: 50)
.clipped()
.contentShape(Rectangle()) // << here !!
}
VStack{
选择器(选择:。常量(1),标签:文本(“”){
文本(“1”)。标签(1)
文本(“2”)。标签(2)
文本(“3”)。标签(3)
}//.clipped()
.标签隐藏()
.框架(宽度:50)
.clipped()
.contentShape(矩形())//这回答了你的问题吗?实际上,为什么这对你来说是个问题,它是内部表示法?谢谢,但它在iOS 14和Xcode 12.3中不起作用。这对我来说是个问题,因为当我将它与其他UI元素组合在一起时,它会阻止与其他UI的交互谢谢你的帮助,它就像一个符咒一样工作)我实际上y不知道在SwiftUI中我们可以定义交互视图区域,这很酷