SwiftUI中Mask修饰符的理解与使用

Mask是一种用于控制图形元素可见性的图形技术,使用给定视图的alpha通道掩码该视图。在SwiftUI中,它类似于创建一个只显示视图的特定部分的模板。

Mask修饰符的定义:

func mask<Mask>(alignment: Alignment = .center,@ViewBuilder _ mask: () -> Mask
) -> some View where Mask : View

alignment:相对于被修饰视图的对齐方式。
mask:呈现系统将其alpha值应用于指定视图的视图。

当想要将另一个视图的alpha(不透明度)值应用到当前视图时,使用mask(_:)修饰符。
mask(_:)修饰符的不透明度决定了它下面视图的可见性。

使用任何形状或视图作为蒙版。

在这里插入图片描述
上面的第二个图采用了一个圆形的蒙版,并将其opacity设置为0.8.
mask()修饰符与clipShape()不同,本案例中mask()修饰符即可以修改形状也可以修改不透明度。而clipShape()只调整视图的外部形状。

使用渐变色做蒙版

mask()修饰符中,我们也可以添加渐变色,下面就是一个动态的Mask

  @State private var fillPercentage: CGFloat = 0.0var body: some View {VStack {ZStack {RoundedRectangle(cornerRadius: 25).fill(LinearGradient(gradient: Gradient(colors: [Color.gray.opacity(0.2), Color.gray.opacity(0.5)]), startPoint: .topLeading, endPoint: .bottomTrailing))Text("SwiftUI").font(Font.system(size: 100).bold()).frame(width: 350, height: 200).overlay(Image("Image_3").resizable().frame(width: 350, height: 200).mask(LinearGradient(gradient: Gradient(colors: [.clear, .black]), startPoint: UnitPoint(x: 0, y: 1 - fillPercentage), endPoint: UnitPoint(x: 0, y: 1)))).animation(.easeInOut(duration: 1.0), value: fillPercentage)}.frame(width: 350, height: 200).cornerRadius(25).shadow(radius: 10)Slider(value: $fillPercentage, in: 0...1).padding()}.padding()}

在这里插入图片描述

写在最后

SwiftUI中的Mask功能可以创建复杂的静态或者动态用户界面,这个功能使用好了对于我们的App也是十分增色的,视觉效果也非常好。
本文只是对Mask做了一些简单的理解与使用,有感兴趣的朋友可以继续深入探讨一下。

最后,希望能够帮助到有需要的朋友,如果觉得有帮助,还望点个赞,添加个关注,笔者也会不断地努力,写出更多更好用的文章。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/849840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大屏可视化建设方案(word)

1.系统概述 1.1.需求分析 1.2.重难点分析 1.3.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 2.3.接口及要求 3.系统功能设计 3.1.功能清单列表 3.2.数据源管理 3.3.数据集管理 3.4.视图管理 3.5.仪表盘管理 3.6.移动端设计 3.1.系统权限设计 3.…

9.1 Go 接口的定义

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

算法训练营day03--203.移除链表元素+707.设计链表+206.反转链表

一、203.移除链表元素 题目链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/ 文章讲解&#xff1a;https://programmercarl.com/0203.%E7%A7%BB%E9%99%A4%E9%93%BE%E8%A1%A8%E5%85%83%E7%B4%A0.html 视频讲解&#xff1a;https://www.bilibili.com…

Python报错:IndentationError: unexpected indent问题的解决办法及原因

解决Python报错&#xff1a;IndentationError: unexpected indent问题的解决办法及原因 Python是一种注重可读性的编程语言&#xff0c;它使用缩进来定义代码块。如果你遇到了IndentationError: unexpected indent的错误&#xff0c;这意味着Python解释器在代码中遇到了意外的缩…

阿里云(域名解析) certbot 证书配置

1、安装 certbot ubuntu 系统&#xff1a; sudo apt install certbot 2、申请certbot 域名证书&#xff0c;如申请二级域名aa.example.com 的ssl证书&#xff0c;同时需要让 bb.aa.example.com 也可以使用此证书 1、命令&#xff1a;sudo certbot certonly -d “域名” -d “…

使用亮数据代理IP爬取PubMed文章链接和邮箱地址

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

排查互联网敏感信息,对信息泄露说“不”

前言 01 近几年&#xff0c;随着我国对网络安全的重视&#xff0c;贴近实战的攻防演练活动越发丰富&#xff0c;各单位的网络安全建设也逐步从“事后补救”升级为“事前防控”。在演练中&#xff0c;进攻方会在指定时间内对防守方发动网络攻击&#xff0c;检测出防守方存在的…

04 架构核心技术之分布式消息队列

本课时的主题是分布式消息队列&#xff0c;分布式消息队列的知识结构如下图。 本课时主要介绍以下内容。 同步架构和异步架构的区别。异步架构的主要组成部分&#xff1a;消息生产者、消息消费者、分布式消息队列。异步架构的两种主要模型&#xff1a;点对点模型和发布订阅模型…

【讯为Linux驱动开发】5.并发与竞争

并发&#xff1a;一个CPU在一个时间片只能执行一个任务&#xff0c;切换速度很快。 并行&#xff1a;双核CPU&#xff0c;真正的同时执行两个任务 并行就是并发的理想情况&#xff0c;统称并发。 【问】Linux在什么情况下产生并发&#xff1f; 1.中断中修改公共资源 2.抢占…

【静夜思】小时候的回忆

为什么大家都会对自己童年时期的评价很高&#xff1f;甚至是一些模糊都快到想不起来的记忆&#xff1f; 博主是00后&#xff0c;那时候小学的我非常喜欢看动画片&#xff0c;像经典的喜羊羊、熊出没、胡图图等等&#xff0c;太多了。等上了高中后&#xff0c;博主也成为了一名…

全光网络与传统网络架构的对比分析

随着信息技术的飞速发展&#xff0c;网络已经成为我们日常生活中不可或缺的一部分。在这个信息爆炸的时代&#xff0c;全光网络和传统网络架构作为两种主流的网络技术&#xff0c;各有其特点和适用范围。本文将对这两种网络架构进行详细的对比分析&#xff0c;帮助读者更好地了…

大学生创新与创业搜题软件?推荐7个搜题软件和学习工具 #媒体#知识分享

随着大学课程的增多和知识的不断积累&#xff0c;大学生们常常面临着繁重的作业和复杂的题目。为了解决这一问题&#xff0c;许多大学生搜题软件应运而生。 1.彩虹搜题 这个是公众号 个性化推荐功能&#xff0c;精准满足需求。更高效地获取你想要的答案。 下方附上一些测试的…

stack overflow复现

当你在内存的栈中&#xff0c;存放了太多元素&#xff0c;就有可能在造成 stack overflow这个问题。 今天看看如何复现这个问题。 下图&#xff0c;是我写的程序&#xff0c;不断的创造1KB的栈&#xff0c;来看看执行了多少次&#xff0c;无限循环。 最后结果是7929kB时, 发…

C++| 一维线性插值、imadjust函数

前言&#xff1a;最近要从Matlab代码改C代码&#xff0c;不能直接用Matlab生成的C代码&#xff0c;因为需要嵌入到已有项目中。Matlab本身有很多很方便的数学公式&#xff0c;但是在C里没有相关的库的话&#xff0c;需要自己实现。 一维线性插值、imadjust函数 一维线性插值原理…

【数据分析基础】实验一 Python运算符、内置函数、序列基本用法

一、实验目的 熟练运用Python运算符。熟练运用Python内置函数。掌握Python的基本输入输出方法。了解lambda表达式作为函数参数的用法。掌握列表、元组、字典、集合的概念和基本用法。了解Python函数式编程模式。 二、实验内容&#xff1a; 1. 在命令模式测试如下命令&#x…

FENDI CLUB精酿啤酒品鉴体验

当提及“品质卓越&#xff0c;口感非凡”的啤酒时&#xff0c;FENDI CLUB精酿啤酒无疑是一个值得一试的选择。这款啤酒以其独特的酿造工艺和优质的原料&#xff0c;为消费者带来了与众不同的味觉享受。 一、独特的酿造工艺 FENDI CLUB精酿啤酒在酿造过程中&#xff0c;严格遵循…

1200度高温预精轧高线测径仪的特点和抗干扰

关键字:高温测径仪,常温测径仪,预精轧测径仪, 高线测径仪, 线材测径设备,抗干扰测径仪, 高线参数&#xff1a;轧材规格&#xff1a;Φ8&#xff5e;36mm轧制速度&#xff1a;≤ 120 m/s轧制温度&#xff1a; ≤1200℃ 高温预精轧高线光电测径仪是一种用于测量高温线材直径的设备…

【数据分析基础】实验numpy、pandas和matplolib

文件score.xlsx 中存放了学生的各个科目的考试成绩&#xff08;如下图&#xff09;&#xff0c; 1. 编程实现&#xff1a;输入任意一个学号&#xff0c;将该学号对应的成绩&#xff0c;通过雷达图显示。 &#xff08;1&#xff09;程序代码&#xff1a; import pandas as pd…

数字科技如何助力博物馆设计,强化文物故事表现力?

国际博物馆日是每年为了推广博物馆和文化遗产&#xff0c;而设立的一个特殊的日子&#xff0c;让我们可以深入探讨博物馆如何更好地呈现和保护我们的文化遗产&#xff0c;随着近年来的数字科技发展&#xff0c;其在博物馆领域的应用越来越广泛&#xff0c;它为博物馆提供了新的…

HTTP协议分析实验:通过一次下载任务抓包分析

HTTP协议分析 问&#xff1a;HTTP是干啥用的&#xff1f; 最简单通俗的解释&#xff1a;HTTP 是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。 在Internet上的Web服务器上存放的都是超文本信息&#xff0c;客户机需要通过HTTP协议传输所要访问的超文本信息。 一、…