如何应用大于底层视图的覆盖层?

问题描述 投票:0回答:2

我正在尝试创建一个比底层视图更大的覆盖层。

我尝试使用

overlay()
修改器来执行此操作,但覆盖层似乎不允许延伸超出底层视图的边界。

我意识到,通过将层次结构中的覆盖层向上拉到具有更大边界的包含视图并使用

ZStack
是可行的,但这会破坏我想要的流程。我希望叠加层在创建它的较小视图中独立存在(有点像
sheet()
修改器的工作原理)。

这在 SwiftUI 中可能吗?

swiftui
2个回答
0
投票

    Rectangle()
      .foregroundColor(.gray)
      .frame(width: 100)
      .overlay(
        Rectangle()
          .foregroundColor(.green)
          .frame(width: 200)
          .blendMode(.multiply)
      )


0
投票

我想你可能想使用屏幕的精确尺寸。请记住,当您旋转设备时,此解决方案将无法正常工作。如果您想进行精确测量:

Rectangle()
  .foregroundColor(.gray)
  .frame(width: 100)
  .overlay(
    Rectangle()
      .foregroundColor(.green)
      .frame(width:UIScreen.main.bounds.width,height:UIScreen.main.bounds.height)
      .blendMode(.multiply)
  )

如果您“仅”尝试填充覆盖容器中直接可用的空间,我会使用这样的scaledToFill修改器:

Rectangle()
  .foregroundColor(.gray)
  .frame(width: 100)
  .overlay(
    Rectangle()
      .foregroundColor(.green)
      .scaledToFill()
  )
© www.soinside.com 2019 - 2024. All rights reserved.