SwiftUI 中的上下文菜单预览没有圆角

Posted

技术标签:

【中文标题】SwiftUI 中的上下文菜单预览没有圆角【英文标题】:Context menu preview not with rounded corners in SwiftUI 【发布时间】:2021-11-16 22:54:20 【问题描述】:

当在 SwiftUI 中使用样式为 Listplain 并在 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)无法独立弹出的解决

Xcode 11 - SwiftUI 预览暗模式 [重复]

表达式类型不明确,没有更多上下文错误 SwiftUI

SwiftUI 上下文菜单是不是使用 LayoutConstraints?

Tableview 上下文菜单:从行到预览视图控制器的自定义动画

通过左键单击 macOS 触发 SwiftUI 上下文菜单