【问题标题】:Context menu preview not with rounded corners in SwiftUISwiftUI 中的上下文菜单预览没有圆角
【发布时间】: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 代。

标签: ios swift swiftui


【解决方案1】:

在这种情况下,我认为你应该向 Apple 提交一个错误。

经过一番尝试,我注意到如果您为 Label 定义一个框架,则视图会正确地四舍五入。

我尝试将文本固定大小但没有成功:

Text("world").fixedSize()

问题似乎来自 _UIMorphingPlatterView,更准确地说是使用 _UIPortalView 的 _UIPlatterClippingView。

如果框架未固定,则剪辑无法正确应用。

调试视图层次结构给出了这个:

【讨论】:

    猜你喜欢
    • 2022-12-28
    • 1970-01-01
    • 2020-05-23
    • 2021-05-24
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    相关资源
    最近更新 更多