SwiftUI 在圆角矩形内屏蔽一个矩形

2023-11-23

Card

你好呀。我想知道,在 SwiftUI 中,如何屏蔽圆角矩形的内容,以便子矩形剪掉角。

在我的示例中,我在 zstack 上有一个白色圆角矩形和一个粉色矩形,我尝试应用剪切,但粉色矩形不符合边角。

我尝试将 .mask 应用于白色矩形,但它给出了与预期不同的结果(有时它不显示粉红色矩形)。

我确实找到了一个例子,你可以设置自己的cornerRadius特定圆角 SwiftUI

但我想知道是否有一种方法可以掩盖粉红色矩形的内部/主体,以便它符合父级的圆角矩形?

我的代码如下;

var body: some View {
        GeometryReader { geometry in

            Color.gray
                .edgesIgnoringSafeArea(.top)
                .overlay(

                    ZStack (alignment: .topLeading) {

                        RoundedRectangle(cornerRadius: 16,
                                         style: .continuous)
                            .foregroundColor(.white)
                            .shadow(radius: 10)
                             // Tried using .mask here 

                        Rectangle()
                            .fill(Color.pink)
                            .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 150, alignment: .top)
                            .clipped()


                    }
                    .frame(width: 300, height: 450, alignment: .center)
            )

        }
        .edgesIgnoringSafeArea(.all)
    }

编辑:澄清一下:

粉红色矩形应保持为矩形,但剪裁左上角和右上角以匹配父级白色圆角矩形。


如果我正确理解了你的目标,这里有一个解决方案 - 正确位置唯一需要的剪辑是after构建内部内容(在本例中为两个矩形)。所以剪辑与RoundedRectangle在整个卡片周围提供圆角。 (也shadow最有可能的是整张卡都需要,所以放在最后)。

更新:使用 Xcode 13.3 / iOS 15.4 重新测试

demo

ZStack (alignment: .topLeading) {
    Rectangle()
        .foregroundColor(.white)

    Rectangle()
        .fill(Color.pink)
        .frame(minWidth: 0, maxWidth: .infinity, maxHeight: 150, alignment: .top)
}
.clipShape(RoundedRectangle(cornerRadius: 16))       // << here !!
.frame(width: 300, height: 450, alignment: .center)
.shadow(radius: 10)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SwiftUI 在圆角矩形内屏蔽一个矩形 的相关文章

  • 停止在 iOS Web 应用程序上滚动屏幕边缘?

    正在开发 iOS 网络应用程序 用户可以上下滚动页面内容 但是 有没有办法阻止屏幕被拖动得太远以致灰色背景变得可见 这可以通过在移动 Safari 中打开任何网页并将页面下拉来复制 您可以使用诸如 Pastrykit 或 iScroll 之
  • 使用 iOS swift AVPlayer 在横向模式下不全屏

    我将视频视图设置为全屏 然而 在模拟器中玩时 它并没有全屏运行 此问题仅适用于 iPad 不适用于 iPhone 这是我的代码 override func viewDidAppear animated Bool super viewDidA
  • prepareForSegue 和 PerformSegueWithIdentifier 发送方

    我想知道标题中的函数如何工作以及发送者参数 假设单击按钮调用了performSegue方法 那么这是否也调用了prepareSegue方法 是否在performSegue方法之前但在按下按钮之后调用prepareSegue方法 另外 这两个
  • 解包可选值时意外发现 nil - 使用 ALAMOFIRE

    我正在尝试使用 Alamofire 获取 JSON 格式的数据 当我使用一个 URL 时 它工作正常 当我使用另一个 URL 时 我在解包可选值时收到错误 我似乎无法追踪错误来自哪里 我已采取将代码放入 ViewDidLoad 来跟踪错误
  • 从 Firestore Swift 获取文档 ID

    我正在尝试从中获取文档IDFirestore通过执行这样的查询 func updateStatusInFirestore let orderid saleOrder first Orderid print orderid let setti
  • 方法调用中的插入符[重复]

    这个问题在这里已经有答案了 我正在阅读本教程 并遇到了这行代码 这让我感到困惑 localSearch startWithCompletionHandler MKLocalSearchResponse response NSError er
  • 从基元创建自定义形状

    我正在尝试通过组合原始形状来创建自定义物理形状 目标是创建一个圆形立方体 合适的方法似乎是初始化 形状 变换 我在这里找到的https developer apple com library prerelease ios documenta
  • 在后台每 X 分钟执行一次函数不起作用

    我使用此代码每 X 分钟执行一次函数 void executeEveryOneMinute self myFunction dispatch after dispatch time DISPATCH TIME NOW int64 t 60
  • 从 AVAudioRecorder 获取分贝

    我正在尝试从 AVAudio 录音机获取分贝值 这是我目前的代码 我有一个启动录音机的方法 然后是一个读取分贝值的方法 var recorder AVAudioRecorder 全局定义的记录器 然后在此处使用 func init reco
  • 在 iOS 8 中创建通话/双高状态栏?

    是否有调用自定义通话 双高状态栏的标准方法 如果没有 那么构建我自己的功能的最佳起点是哪里 我知道关于如何做到这一点存在一些多年的问题 但没有任何令人满意的答案 有什么新方法可以做到这一点吗 可能在 iOS 8 中 这里没有什么新鲜事 但我
  • 将 Xcode 4.5 新 XIB 文件恢复到 iOS<6

    我已经安装了Xcode 4 5 with iOS6 SDK以及其他用于测试目的的旧 SDK 从 4 3 到 6 0 很美 但是有一个BIG问题 生成一个新的 XIB 文件以兼容 iOS6 这是一个问题 因为我的应用程序需要运行在旧设备 不只
  • 在 SwiftUI 中,如何执行手势但将手势转发到其后面的视图?

    我正在创建一个工具提示系统 如果用户触摸工具提示之外的任何地方 我想关闭工具提示 我希望这样在工具提示之外的触摸既可以消除工具提示 又可以激活用户点击的任何控件 因此 您可以打开一个工具提示 然后仍然单击工具提示外部的按钮 并在第一次点击时
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • Apple 针对 http 直播流媒体应用程序的政策

    这里有要求 http developer apple com library ios documentation NetworkingInternet Conceptual StreamingMediaGuide UsingHTTPLive
  • 在 UIView 中绘制彩色文本 -drawRect: 方法

    我正在尝试在我的中绘制彩色文本UIView子类 现在我正在使用单视图应用程序模板 用于测试 除了以下内容外 没有任何修改drawRect method 文本已绘制 但无论我将颜色设置为什么 它始终是黑色的 void drawRect CGR
  • Cordova Phonegap“导出失败”错误代码 70 构建 ios 时

    我目前正在使用 Cordova Phonegap 构建 iOS 应用程序 本来工作正常 但现在运行时出现错误cordova build ios在终端中 我收到以下错误 导出失败 错误 命令的错误代码 70 带有参数的 xcodebuild
  • Swift 3 中数组的 indexOf(_:) 方法的替换

    在我的项目 用 Swift 3 编写 中 我想使用从数组中检索元素的索引indexOf 方法 存在于 Swift 2 2 中 但我找不到任何替代方法 Swift 3 中是否有任何好的替代方法或类似的方法 Update 我忘记提及我想在自定义
  • 如何像谷歌日历一样将单元格的内容滚动到表格视图中的另一个单元格中?

    我希望用户界面像谷歌日历那样进入桌面视图 它在不同的行中显示相同的日期事件 但是当您向上或向下滚动时 左侧的日期也会向上向下滚动 Can you please help me how to achieve this Please take
  • 如何在运行仅 iPhone 应用程序(非通用)的 iPad 上的 UIPickerView 中支持 VoiceOver?

    一般来说 我会查看 Apple 的 UICatalog 示例代码以获取基本的 VoiceOver 支持 但示例代码中似乎有对 UIPickerViews 的 VoiceOver 支持 我是否需要在某处提供accessibilityLabel
  • 在iOS中设置框架的原点

    我正在尝试以编程方式设置框架的原点 Method1 button frame origin y 100 方法二 CGRect frame button frame frame origin y 100 我尝试了方法 1 但它不起作用 显示错

随机推荐

  • 如何创建支持通用 id(包括自动生成的 id)的通用实体模型类?

    我有三个kinds表的主键数 INT自动生成的主键使用AUTO INCREMENT来自数据库供应商的容量 MySQL CHAR X 将用户可读值存储为键的主键 其中 X 是数字且 50 复杂主键 由表的 2 或 3 个字段组成 此外 还有一
  • TabControl 的 TabItems 共享相同的内容...不想要

    以下示例 xaml 使每个选项卡项共享相同的 TextBox 我想 在某种程度上 这是有道理的 但这是意想不到的行为 几乎感觉像是一个错误 我在文档中找不到任何解释该行为或如何正确解决该行为的信息
  • 担心在 itune 配置门户中的团队帐户下的不同组之间共享分发证书的私钥

    我们是一所大型大学 在 Apple itunes 配置门户中拥有一个团队帐户 我们有多个不同的小组开发iOS应用程序 这些应用程序将在团队帐户 大学名称 下发布 看来苹果只允许创建一份分发证书 要发布应用程序 每个组都需要私钥来签署应用程序
  • 尽管我已经删除了该对象,为什么下面的代码没有崩溃?

    class object public void check std cout lt lt I am doing ok lt
  • 无法为 XNA 4.0 游戏选择目标框架

    我有一个 XNA 4 0 项目 希望使用 Net 4 0 完整配置文件进行编译 但默认情况下它设置为客户端配置文件 这目标框架应用程序选项卡中的组合框呈灰色 我已经卸载并重新安装了 Net 3 5 Net 4 0 和 Xna 4 0 可能是
  • 为什么新的 C 书籍不遵循 C99 标准?

    我见过的几乎所有 相对 关于 C 编程的新书似乎都不遵守 C99 标准 或者在额外的章节中对其进行了介绍 来自 Java 背景的 C99 标准使我的迁移 嗯 仍在迁移 变得更加容易 这可能也适用于其他语言 大多数 C 开发人员似乎还没有接触
  • 你可以像 String.fromCharCode 一样使用 String.fromCodePoint 吗

    我仍在学习 JavaScript 并练习从键盘获取输入 我刚刚了解到String fromCodePoint 对我来说 似乎捡起了所有String fromCharCode does Is String fromCodePoint被浏览器和
  • 如何拍照并保存在“ImageView”中?

    我需要采取picture与camera 保存picture 显示ImageView当我点击Imageview显示全屏 mode 将来需要发送picture to the internet 这就是我所做的 public void captur
  • 多重赋值语义

    在 Python 中可以这样做 a b 1 2 a b 1 2 a b 1 2 我使用检查生成的字节码dis并且它们是相同的 那么为什么要允许这样做呢 我是否需要其中之一而不是其他 需要在赋值左侧包含更多结构的一种情况是 当您要求 Pyth
  • 冻结 ASP.NET 网格视图列

    如何冻结 asp net 网格视图中最左边的初始 2 3 列 这样 在水平滚动时 将始终显示冻结的初始 2 3 列 有答案吗 是的 似乎可以使用一些 css 魔法 将固定列和可滚动列放在不同的 z 索引上 以将固定列保持在顶部 这伴随着一个
  • 在Shiny应用程序中删除DT数据表的行

    我有一个闪亮的应用程序 可以在 DT 表中显示数据帧数据 在应用程序中 我有一个按钮 单击该按钮将删除所选行 当我第一次选择行并单击删除按钮时 它会起作用 但再次单击后 错误的行将被删除 并且任何以前删除的行都会重新出现 我假设这是因为当我
  • 强制特定数据类型作为函数的参数

    我只是想知道是否有一种方法可以强制函数只接受某些数据类型 而不必在函数内检查它 或者 这是否不可能 因为 R 的类型检查是在运行时完成的 与 Java 等编程语言相反 类型检查是在编译期间完成的 例如 在 Java 中 您必须指定数据类型
  • 在 python (django) 中使用带参数的游标/查询中的“like”

    我知道这可能很愚蠢 但我决定无论如何都要问 我一直在尝试查询类似的内容 cursor execute select col1 col2 from my tablem where afield like s and secondfield s
  • MySQL和MongoDB之间的数据同步

    我正在寻找一种将数据从 MySQL 同步到 MongoDB 的方法 我不想只是复制我的数据 我希望它们永久同步 有谁知道钨复制器是否可以完成这项工作 我可以看到它复制数据 但是当 MySQL 数据库中发生更改时自动复制数据怎么样 如果不可能
  • 在 Objective-C 中如何测试字符串是否为空?

    我如何测试是否NSStringObjective C 中是空的吗 您可以检查是否 string length 0 这将检查它是否是一个有效但空的字符串 以及它是否为零 因为调用lengthon nil 也会返回 0
  • Office Open XML 中的 之间有什么区别?

    这两个 Office Open XML 片段有什么区别
  • android Camera2 API + TextureView 覆盖用于在相机预览上绘图

    因此 我需要覆盖camera2预览并通过在顶部分层透明覆盖层在预览视频图像上绘制一个矩形 我从这里开始使用基本的 Camera2 代码 https github com googlesamples android Camera2Basic
  • 如何在 DT::datatable 中使用服务器端处理?

    我正在使用 DT datatable 来可视化 R markdown 文件中的表 R markdown file library DT r viewdata this is an example but my actual dataset
  • 如何将 hashMap 与 JTable 一起使用

    我有一个 hashMap 我希望在 JTable 中查看它的数据 但我在获取 hashMap 的列和行数量以及要显示的数据时遇到了麻烦 我有一个 hashmap 它以 accountID 作为键和一个学生的对象 其中每个学生都有自己的数据
  • SwiftUI 在圆角矩形内屏蔽一个矩形

    你好呀 我想知道 在 SwiftUI 中 如何屏蔽圆角矩形的内容 以便子矩形剪掉角 在我的示例中 我在 zstack 上有一个白色圆角矩形和一个粉色矩形 我尝试应用剪切 但粉色矩形不符合边角 我尝试将 mask 应用于白色矩形 但它给出了与