iOS mask layer的使用

集成电路制造中CD Layer和Mask Layer的关系 Mask Layer 是实际用于制造光刻掩模(Photomask)的图形层,每一层掩模对应一道光刻工艺步骤(如Active、Poly、Metal等)。CD Layer 的数据会被转换为 Mask Layer 的图形,但 Mask Layer 可能包含更多信息(如辅助图形、OPC修正结构)。:CD Layer 的规则会直接影响 Mask Layer 的图形生成,但 Mask Layer 的复杂性远高于原始设计(因包含工艺补偿)。:在掩模上添加修正图形(如锯齿边、亚分辨率辅助特征),补偿光刻中的衍射效应。 阅读详情

利用UIView.layer.mask可以控制一个View的显示区域,如图所示


如果我们让这个蓝色的View只显示一个圆形域我们可以这样写:

    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:self.topView.bounds];

    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.path = path.CGPath;
    self.topView.layer.mask = maskLayer;
这段代码的意思就是,创建一个圆形的遮罩,然后让圆形的区域显示内容,如图所示。


这是有如果有同学要问,如果我们想要圆形区域不显示,其他区域显示怎么办,那可以这样写:

    UIBezierPath *path = [UIBezierPath bezierPathWithRect:self.topView.bounds];
    [path appendPath:[UIBezierPath bezierPathWithOvalInRect:self.topView.bounds]];
    
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.path = path.CGPath;
    maskLayer.fillRule = kCAFillRuleEvenOdd;
    self.topView.layer.mask = maskLayer;
这样效果如下

上面的代码的意思就是,先创建一个矩形,然后再添加一个圆形,遮罩的形状如图所示

关键的一句代码:maskLayer.fillRule = kCAFillRuleEvenOdd;这句代码的意思就是设置填充规则,利用奇偶填充规则,意思就是从图形内任意一点射出一条射线,如果改射线跟图形的交点有偶数个则不填充,如果有奇数个交点,则填充,也就是说,上面的图形矩形和圆形相交的地方是不填充的,因为从圆形里射出的射线有两个交点,所以不会填充,填充完的图形如图所示。

以此图形进行遮罩,变会产生图三的效果。知道了这个原理,配合CABasicAnimation动画可以写出很炫酷的转场效果,到下一篇文章再跟大家介绍!



iOS 遮罩(mask)效果 如果把视图裁剪圆形,我们通常会使用给一个视图加圆角的方法。view.layer.masksToBounds = YES; view.layer.cornerRadius = view.frame.size.width/2;但如果需求是裁剪某一部分,如图所示裁剪成如下的样子:这样,上面的方法就不奏效了。这个时候使用layer的mask的属性,能够简单的解决这个问题。 代码如下:创建maskView 阅读详情

相关推荐

UIView指定设置圆角及Layer的mask的简单理解

UIView指定设置圆角及Layer的mask的简单理解 在App开发中,为了美观,我们常常会设置图片圆角,常规情况下都是设置四个角圆角,这种场景也是非常常见的,我们今天要考虑的场景是部分圆角的场景。比如设置左上、右上圆角,下面直角不变。具体效果如下所示: 如上图弹出的提示框,这个时候要设置上圆角,下边直角不变,一般如果是设置全圆角,两行代码就完事也是非常快捷方便的如下所示: whit...

qq_32118335的博客 891

mask layer的遮罩层

1. layer层 mask 遮罩效果 //渐变层 CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.frame = CGRectMake(0, 100, kWidth, kWidth); gradientLayer.colors = @[(__bridge i...

weixin_34050389的博客 992

iOS mask 层和 CAShapeLayer层中间挖去一部分

iOS mask 层和 CAShapeLayer层中间挖去一部分的 源码分析

layer之mask——IOS

UIView——layer之mask

yinhaijing_ss的专栏 1290

保姆级教程:在Windows 10/11上安装配置KNIME 5.8.0(含中文文本库更新)

本文提供在Windows 10/11系统上安装配置KNIME 5.8.0的详细指南,包括中文文本库更新和性能优化方案。从环境准备、安装流程到中文文本处理能力强化,逐步指导用户搭建高效的数据分析环境,特别针对国内网络环境和中文用户需求提供实用解决方案。

weixin_29081101的博客 670

Oracle21C Windows安装全攻略:从下载到配置环境变量,避开ORA-12514的坑

本文详细介绍了Oracle21C在Windows系统上的安装全流程,包括环境准备、安装包验证、分步安装指南、数据库实例创建与配置、环境变量精准配置等关键步骤,特别针对常见的ORA-12514错误提供了解决方案,帮助用户顺利完成安装并避免常见问题。

ooo22的博客 415

ios UIView的mask属性,view和layer的关系

mask属性 :https://www.jianshu.com/p/fe4124de3729 view和layer的关系 :https://www.jianshu.com/p/9c7a23ea705b 什么是mask: CALayer有一个属性叫做mask,通常被称为蒙版图层,mask类似于子视图,但却不是一个普通的子视图,它本身也是CALayer类型,具有和其他图层一样的绘制和布局属性...

gcs的博客 3985

vscode中使用PlatformIO创建工程加载慢

解决使用VSCODE+PlatformIO中,第一次新建工程一直加载的问题

Reasally的博客 4975

iOS:Layer.mask属性用法

Core Animation里面的CALayer已经被说烂了,这里就不加赘述了。 需要说明两点: 1.Layer跟UIView之间的关系可以这么理解,只有root layer才是真正跟view打交道的,一个view并不代表一个layer; 2.layer的坐标系统,anchorPoint这个是相对于自身而言的,position是相对于父layer而言的; 另外:创建一个最简单的layer,

LivesXu的博客 1万+

强化学习 | Multi Agents | Trust Region | HATRPO | HAPPO

ICLR2022多智能体论文,将trust region推广到MA上,保证单调递增。学习博客,共7k字,纯手敲。含大量手写笔记。

111辄的博客 1万+

Camera tuning flow相机调试流程

相机调试流程分为三大模块:ProcessRaw处理原始数据(黑电平校正、阴影校正),3A实现自动控制(曝光/对焦/白平衡),ISP进行图像精加工(伽马校正、锐化降噪、色彩处理)。三个阶段环环相扣,前阶段为后阶段提供基础,最终输出画质优良且风格化的图像。

weixin_64706696的博客 1230

ios layer.mask

Core Animation里面的CALayer已经被说烂了,这里就不加赘述了。 需要说明两点: 1.Layer跟UIView之间的关系可以这么理解,只有root layer才是真正跟view打交道的,一个view并不代表一个layer; 2.layer的坐标系统,anchorPoint这个是相对于自身而言的,position是相对于父layer而言的; 另外:创建一个最简

HumorousGhost 913

[企业AI落地] RAG 知识库系统在多租户环境下的细粒度权限隔离设计

多租户 RAG 系统真正的风险不只是搜不到,而是把不该看到的内容查出来、说出来、写回去。本文结合多客户售后知识助手场景,用元数据结构、向量检索过滤、回答策略和审计回写示例拆解租户、资源、检索、生成、审计五层权限边界。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 220

iosmask_iOS—Mask属性的使用

Mask属性介绍Mask平时用的最多的是masksToBounds 吧. 其实除此以外Mask使用场景很多,看完之后你会发现好真是好用的不要不要的...先来了解下Mask属性到底是什么?Mask 英文解释是蒙板/面罩,平时我们称为蒙层. 在苹果官方文档里如下图,意思是Mask是一个可选的Layer,它可以是根据透明度来掩盖Layer的内容.这么一说好像...还是不晓得有什么卵用...那再看下面这个...

weixin_39922004的博客 316

二十一、CANdelaStudio深入-SPRMIB的配置

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的肯定响应抑制位配置,欢迎各位朋友订阅、评论,可以提出宝贵意见,以持续输出更好的作品,同时会根据评论、私信不定期更新文章内容,以及专栏目录。订阅该专栏的朋友可私信小编免费答疑解惑(^U^)ノ~YO CANdelaStudio-从入门到深入目录 文章目录CANdelaStu

诊断协议那些事儿's blog 1870

LeRobot 入门教程(七)数据集

LeRobot Dataset v3.0 是机器人学习数据的标准化格式,支持多模态时间序列数据和视频的统一访问。该版本通过基于文件的存储(Parquet/MP4)、关联元数据和Hub原生流式处理等新特性,显著提升了性能并降低了存储开销。文档详细介绍了格式设计、安装使用、数据记录与加载方法,以及从v2.1迁移到v3.0的步骤,特别针对大型数据集(如DROID 1.0.1)的处理提供了SLURM集群移植方案。v3.0通过优化文件组织和元数据管理,实现了更快的加载速度、更高的内存效率和更好的可扩展性。

2506_90492529的博客 2054

CALayer mask属性实现蒙板效果

相信很多人在ios上实现控件圆角的时候都用过:cornerRadius这个属性,例如实现圆形头像,一般我会这么写: self.headImageView.layer.masksToBounds = YES; self.headImageView.layer.cornerRadius = 20; 这样就能简单的实现图片圆角效果了,那么,实现圆角效果的原理是什么呢?下面我简单的谈一下我自己的理解...

Michael-小鱼儿 428

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS---圆角这个可恶的帧数杀手

前言 在iOS的世界,圆角无处不在,而且必须存在。因为圆角是符合人类视觉安全体验的,圆角让人觉得舒适,而方角在潜意识层次是具有伤害体验的,因为尖尖的东西总是有可能对人造成伤害的,所以我们更喜欢圆角。在我之前的文章中讲过,在iOS的中设置圆角是非常容易的一件事情,这也体现出苹果也是非常重视圆角这件事情的。 圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候。下面来

Happy的专栏 665

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

ios Image裁剪成圆形的方法

1、通过image mask来操作,需要添加mask目标图片。 mask方法 + (UIImage*) maskImage:(UIImage*)image withMask:(UIImage*)mask {    CGImageRef imgRef = [image CGImage];CGImageRef maskRef = [mask CGImage];CGImageRef ac

逢个场,作个戏 2308

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

如何使用mask资源图

在开发过程中,类似android和其他平台的UI开发方法,需要通过一个mask图显示部分UI或者Icon资源。ios的控件自带alpha的值,但是这个值都是整个icon或者UI的透明效果,不能做到自定义的透明或者镂空效果。我们必须借助于mask资源图。 具体的方法:修改imageview的layer,即可完成这个工作。 CALayer *mask = [CALayer layer]; m

We’re here to put a dent in the universe. 519

Image裁剪成圆形的方法

ios Image裁剪成圆形的方法   (2013-03-05 14:32:32) 转载▼ 标签:  ios   xcode   圆形图片   it 分类: IOS 1、通过image mask来操作,需要添加mask目标图片。 2、通过imageview的layer来操作 如下代码

Luciflon的专栏 2623

iOS 离屏渲染的研究(一)

前言 在iOS的世界,圆角无处不在,而且必须存在。因为圆角是符合人类视觉安全体验的,圆角让人觉得舒适,而方角在潜意识层次是具有伤害体验的,因为尖尖的东西总是有可能对人造成伤害的,所以我们更喜欢圆角。在我之前的文章中讲过,在iOS的中设置圆角是非常容易的一件事情,这也体现出苹果也是非常重视圆角这件事情的。 圆角虽好,但如果使用不当,它就是你的帧数杀手,特别当它出现在滚动列表的时候。下面来

新博客地址:blog.songchunmin.com 3567

android马赛克,iOS & Android 去马赛克处理

马赛克化,是一种常见的图片处理方式。主要思路是根据马赛克大小计算出该小块区域的平均颜色值,然后填充上该颜色来达到马赛克的效果。马赛克越大,图片越模糊;反之,图片越清晰。有很多文章都提到过如何做马赛克处理。但是大家有没有想过,如何去马赛克化呢?即将马赛克的图变成原图,也就是下面这张图的效果,随着手指的涂抹,图片逐渐清晰。example.gif说起来,实现也挺简单。但是如何想到这个思路,还得从马赛克化...

weixin_33458169的博客 1455

iOS —— 视图实现圆角效果方法及比较

一、layer.cornerRadius 第一种方法最简单,通过层对象的cornerRadius属性实现圆角效果,代码如下: view.layer.cornerRadius = 8.0; view.layer.masksToBounds = YES; 缺点是会有2次rending passes。首先off-screen画出带圆角的图,然后在视图上画第二次。 二、通过UIB

天空 1530

iOS 视图实现圆角效果的三种方法及比较

通过代码,至少有三种方法可以为视图加上圆角效果。附例子: https://github.com/weipin/RoundedCorner 方法一、layer.cornerRadius 第一种方法最简单,通过层对象的cornerRadius属性实现圆角效果,代码如下: view.layer.cornerRadius = 8.0; view.layer.masksToBounds

sandouchan的博客 584
上一篇: iOS改变Navigationbar透明度
iam_lmk
博客等级 码龄16年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值