SwiftUI 中的上下文菜单预览没有圆角
Posted
技术标签:
【中文标题】SwiftUI 中的上下文菜单预览没有圆角【英文标题】:Context menu preview not with rounded corners in SwiftUI 【发布时间】:2021-11-16 22:54:20 【问题描述】:当在 SwiftUI 中使用样式为 List
的 plain
并在 VStack
内使用多个 Text
视图时,如下所示,显示其上下文菜单时视图的预览没有角半径。如果您删除 Text
视图之一,它将具有角半径。此外,您需要向下滚动到的行在大多数情况下也会显示角半径。我尝试将contentShape
修饰符与RoundedRectangle
一起使用,但没有修复它。我怎样才能让它一直显示圆角半径?
List
ForEach(1...20, id: \.self) _ in
VStack
Text("Hello")
Text("World")
.contextMenu
Button label: Text("Hello")
.listStyle(.plain)
【问题讨论】:
您在哪种设备上尝试过?在 Xcode 13.1 和 ios 15.0 模拟器上测试,具有 2 个元素的 VStack 正确舍入 @Hikosei 谢谢。到目前为止,我已经在 Xcode 13 和 iOS 15 上尝试了 12、13、13 Pro 和 13 Pro Max,它们都重现了这个问题。哪种设备适合您? 很好的复制品,因为它适用于较小的设备 iPod Touch 第 7 代。 【参考方案1】:在这种情况下,我认为你应该向 Apple 提交一个错误。
经过一番尝试,我注意到如果您为 Label 定义一个框架,则视图会正确地四舍五入。
我尝试将文本固定大小但没有成功:
Text("world").fixedSize()
问题似乎来自 _UIMorphingPlatterView,更准确地说是使用 _UIPortalView 的 _UIPlatterClippingView。
如果框架未固定,则剪辑无法正确应用。
调试视图层次结构给出了这个:
【讨论】:
以上是关于SwiftUI 中的上下文菜单预览没有圆角的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI嵌入在Form或Section中的视图上下文菜单(contextMenu)无法独立弹出的解决
SwiftUI 上下文菜单是不是使用 LayoutConstraints?