如何在没有额外空间的情况下更改 SwiftUI Picker 视图大小?
Posted
技术标签:
【中文标题】如何在没有额外空间的情况下更改 SwiftUI Picker 视图大小?【英文标题】:How to change SwiftUI Picker view size with no additional space? 【发布时间】:2021-01-08 14:06:48 【问题描述】:我是 SwiftUI 新手,正在尝试从 SwftUI 实现 Piker 视图。
我有一个简单的 Picker,其中包含一些要显示的元素。我将一个框架设置为仅 50,为其添加了边框并应用了视图修饰符 .clipped()。下面是代码:
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)
一切看起来都不错。但是,当运行应用程序时开始出现问题,并且在运行时只需打开 Debug View Hierarchy,如果 Picker 宽度更大,您会看到实际大小> 我不知道为什么会这样。拜托,如果你知道如何解决它,我会经常出现,谢谢你????
【问题讨论】:
这是否回答了您的问题***.com/questions/63497649/…?实际上为什么这对你来说是个问题,它是内部表示? 谢谢,但它不适用于 ios 14 和 Xcode 12.3。这对我来说是个问题,因为当我将它与其他 UI 元素结合使用时,它会阻止与其他 UI 的交互 【参考方案1】:尝试使用内容形状,它应该将选择器命中测试限制在剪切区域,例如
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 !!
【讨论】:
非常感谢您的帮助,它就像一个魅力)我实际上不知道在 SwiftUI 中我们可以定义视图的交互区域,非常酷?以上是关于如何在没有额外空间的情况下更改 SwiftUI Picker 视图大小?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SwiftUI 中更改 modal 或 sheet 的大小?