屏蔽 CALayer - iPhone

2023-11-21

我正在为 iPhone 创建一个自定义开/关切换开​​关(类似于标准开关),并且我正在设置滑块的蒙版,但调用[[myView layer] setMask:maskLayer]设置遮罩层相对于其遮罩层的位置,而不是相对于遮罩层的容器层的位置。对于这种特定情况,需要相对于其包含层设置遮罩层的位置,因为切换滑块将在遮罩下方移动,并且遮罩应保持静止。

无需对蒙版和切换滑块组件进行动画处理即可达到所需的效果,有人知道如何实现此目的吗?这是我到目前为止所得到的:

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
CGMutablePathRef path = CGPathCreateMutable();

CGPathAddEllipseInRect(path, nil, CGRectMake(0, 0, 13, 13));
CGPathAddEllipseInRect(path, nil, CGRectMake(30, 0, 13, 13));
CGPathAddRect(path, nil, CGRectMake(6, 0, 32, 13));

[maskLayer setPath:path];
[maskLayer setFillColor:[[UIColor greenColor] CGColor]];

[[self layer] addSublayer:maskLayer];

[maskLayer setPosition:CGPointMake(2, 2)];

[self addSubview:toggleView];

[[toggleView layer] setMask:maskLayer];

蒙版只是一种特殊的子图层,因此蒙版的超级图层始终是它所遮蔽的图层。没有其他办法了。另外,您违反了文档中的此警告:

当将遮罩设置为新层时,新层的超级层必须首先设置为 nil,否则行为未定义。

你应该删除[[self layer] addSublayer:maskLayer]; line.

为了解决您的问题,我将创建另一个图层或视图,其中包含您的切换视图上现在的所有内容,然后将该图层作为子图层添加到您的切换图层中。这样,您可以独立于蒙版放置新的子图层,如果移动父图层,蒙版和子图层都会一起移动(如果我理解正确的话,这就是他们应该做的事情)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

屏蔽 CALayer - iPhone 的相关文章

  • 如何呈现半屏模态视图?

    我有一个 UIViewController 当按下按钮时 我想要一个半屏视图向上滑动 其中有一个 UIPicker 我在 IB 中使用 UIPicker 和带有 完成 取消 按钮的 UIToolBar 制作了一个 UIView 我怎样才能做
  • 使用可达性有什么好处?

    与下面的代码相比 使用 Reachability 有什么优势 我觉得 Reachability 有大量代码 但如果它在任何方面更好 那么我会使用它 NSString connectionString NSString alloc initW
  • 自定义相机视图 Swift iOS 8 iPhone Xcode 6.1

    我想在 iPhone 的 View 中使用相机 我不想使用典型的全屏相机视图 而是我自己的 例如 我想在屏幕中间有一个 200x200 的正方形 并且有一个相机预览 在这个方块下面我想要一个拍照按钮 怎么做 我是新手 速度很快 你会想要使用
  • Android:使用 ObjectAnimator 平移具有视图尺寸小数值的视图

    看来旧的视图动画 translate scale等 不再被接受AnimationInflater 至少截至 ICS 而言 我在 4 0 4 中阅读了它的代码 它明确只需要 XML 元素set objectAnimator animator
  • 如何在松开按钮后立即看到新的视频层?

    我有一个应用程序 用户可以按住按钮来拍摄视频 然而 当他们这样做时 带有视频播放的新图层不会立即出现 相反 有一个非常短的延迟 在用户松开按钮后 您可以看到相机仍然显示相机所看到的内容 延迟结束后 视频立即显示并开始播放 但是 我怎样才能使
  • 如何在 iPhone 应用程序中使用正则表达式以 , (逗号)分隔字符串

    我必须读取包含三列的 csv 文件 在解析 csv 文件时 我得到了这种格式的字符串克里斯托弗 巴斯 为心爱的国家哭泣 期末论文 电子邮件受保护 cdn cgi l email protection 我想将三列的值存储在一个数组中 所以我使
  • iphone sdk - 调用视图的超级视图的视图控制器的方法

    你好 我如何在当前视图中调用当前视图的超级视图的视图控制器中实现的方法 你能帮我吗 谢谢 通常这是通过代表完成的 让您的视图接口定义一个协议和对某个委托的引用 然后让你的父视图控制器实现这个协议 然后父母会这样做 someView fooD
  • iOS 4.0 contentScaleFactor 和比例 - 在 3.1.3 中如何处理?

    我的任务是制作一个在 iOS 4 0 中运行的应用程序再次在 3 1 3 和 3 2 中运行 大多数情况下 它很简单 但处理新 API 的扩展和其他必须传递 返回值的情况很困难 respondsToSelector performSelec
  • 在iPhone上将CSV文件读入sqlite3

    有没有办法在iPhone上将CSV文件读入sqlite3 sqlite3 是否有类似于 SQL 命令的功能 LOAD DATA LOCAL INFILE file csv INTO TABLE TABLENAME FIELDS TERMIN
  • rightBarButtonItem 信息按钮,右侧没有空格

    我有一个UIViewController设置为在其右侧显示一个信息按钮UINavigationItem像这样 UIButton infoButton UIButton buttonWithType UIButtonTypeInfoLight
  • 如何在 UITableView 中显示零行的表格

    我正在动态地将内容加载到 UITableView 中 如果有数据 表格需要显示数据 如果没有数据 表格应显示普通页面 但在我的应用程序中 表格显示带有两条分隔线的普通页面 我需要删除此分隔线并显示纯白色页面 请建议 任何帮助 将不胜感激 如
  • 如何检测 UISwipeGestureRecognizer 的结束?

    来自苹果文档 滑动是一种离散手势 因此每个手势仅发送一次关联的操作消息 void touchesEnded NSSet touches withEvent UIEvent event 当我使用 UISwipeGestureRecognize
  • 如何使用 NSUserDefaults 正确工作(检索值)

    我的代码中有一个简单的方法 如下所示 BOOL isFirstTimeLogin NSString t gName NSString stringWithFormat NSUserDefaults standardUserDefaults
  • 检测 iPhone 是否在运行时运行调试/分发构建

    是否可以在运行时检测正在运行的应用程序是否是通过调试或分发进行编译的 在项目信息中 对于调试配置 添加 DEBUG 预处理器宏 在 GCC 4 2 预处理部分 在代码中 如果您想要包含或不包含某些代码用于调试版本 则可以使用 ifdef 来
  • 在 iPhone 3GS 与 iPhone 4 上为 Mobile Safari 嵌入 HTML5 视频

    我在服务器上的 mp4 文件中有 H 264 AAC 编码的视频 mime 类型的视频 mp4 添加到 Web 服务器 IIS 7 并且我有一个带有视频标签的页面
  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 图像作为电子邮件附件

    我想构建一个应用程序 我可以在电子邮件中附加图像 打开图像并将其设置为我的壁纸 我想让它跨平台 所以你能告诉我是否可以使用phonegap 或者我是否必须为iphone和android构建一个本机应用程序 您好 如果您只想通过电子邮件附加图
  • 在requestAnimationFrame中使用clearRect不显示动画

    我正在尝试在 HTML5 画布上做一个简单的 javascript 动画 现在我的画布是分层的 这样当我收到鼠标事件时 背景层不会改变 但带有头像的顶层会移动 如果我使用 requestAnimationFrame 并且不清除屏幕 我会看到
  • iPhone:UIApplication WillResignActiveNotification 从未被调用

    我正在视图控制器中播放视频 当用户按下硬件主页按钮并且当前正在播放视频时 应用程序崩溃并显示EXC BAD ACCESS在模拟器中 我读到我应该使用applicationWillResignActive停止视频播放的消息应该可以解决崩溃问题
  • 如果我使用自定义 UITableViewCell,是否需要设置 heightForRowAtIndexPath?

    如果我使用自定义 UITableViewCell 是否需要设置 heightForRowAtIndexPath 在我的 NIB 中 我已经设置了单元高度 当我覆盖 heightForRowAtIndexPath 时 单元格的内容不会出现 即

随机推荐

  • 在Python中,在运行时确定对象是否是类(旧类型和新类型)实例

    我正在尝试使用 h5py 模块将一组深度嵌套的类 属性 绑定方法等写入 HDF5 文件以进行长期存储 我真的很接近 我似乎无法解决的唯一问题是在运行时以编程方式找出一种方法来确定某物是否是类实例类型 而不是列表 int 等 我需要递归到类实
  • 同步,何时使用或不使用?

    我开始学习Java中的并发和线程 我了解同步的基础知识 即它的作用 从概念上讲 我理解它提供了对 Java 中多个线程共享资源的互斥访问 但是 当面对像下面这样的示例时 我很困惑同步它是否是一个好主意 我知道代码的关键部分应该同步 并且这个
  • 将逗号分隔的相关项列表注释到 Django 查询集上

    从表面上看 这似乎是一个奇怪的请求 但我需要一个以逗号分隔的模型相关项目字符串 以任何教程中的作者 书籍模型为例 这就是我当前正在做的事情 authors Authors objects all prefetch related books
  • `$(document).on("click", "a"` 和 `$("a").click(` [重复]

    这个问题在这里已经有答案了 谁能告诉我这两个脚本之间有什么区别 我不是 javascript jquery 专家 document on click a function i this data value alert i a click
  • DragTabFrame 关闭不一致

    下面的代码应该有点像您在 FF IE 或 Chrome 等浏览器中看到的多文档界面 MDI 它在选项卡式窗格中显示 文档 作为间隔的黑色缓冲图像 以便可以根据用户选择将它们从窗格拖到新的 或现有的 窗口中 但它在没有更多选项卡时关闭框架以及
  • 如何加速 Python 中的异步请求

    我想从网站下载 抓取 5000 万条日志记录 我没有一次性下载 5000 万个 而是尝试使用以下代码一次下载 1000 万个 但它一次只能处理 20 000 个 超过这个数量会引发错误 因此它变得非常耗时下载那么多数据 目前下载20000条
  • 变量可以在 Sass 文件的 import 语句中使用吗?

    在更少的情况下我可以做这样的事情 basePath some crazy project path to repeat less import basePath less less 所以我尝试在 Sass 中做同样的事情 basePath
  • 捕获关闭 gtk.window

    我有 gtk Window 我需要捕获关闭 我需要关闭显示消息对话框 如果应该关闭窗口 则单击 是 除非有显示窗口 谢谢 处理删除事件信号 返回 False 关闭 True 取消
  • 在固定的时间间隔后调用特定方法

    在我的android应用程序中 我想定期调用特定的方法 即 每 5 秒后 我该怎么做 您可以使用Timer用于方法的固定周期执行 这是代码示例 final long period 0 new Timer schedule new Timer
  • 复制完成后,CloudBlockBlob.StartCopyAsync 是否返回?

    有多种方法可以复制 Azure Blob 存储块 有同步和异步版本StartCopy 还有一个BeginStartCopy其中还有完成回调 The BeginStartCopy方法明确指出复制完成时执行回调 The StartCopy两种方
  • 在 JavaFX 中保存为 jpg 的图像是粉红色的

    我想将 ImageView 中的图像保存到具有不同分辨率的文件中 将其作为 png 结果如预期 至于 jpg 我将所有文件设为粉红色 诀窍在哪里 这是代码 Object imagesFromFotoListView ta myFotoLis
  • 如何编写一个只接受一个枚举变量作为输入的函数?

    我有一个枚举 enum Group OfTwo first usize second usize OfThree one usize two usize three usize 我想编写一个仅以参数作为参数的函数Group OfTwo变体
  • CSS3 对 HTA 的支持

    HTA 支持 HTML5 和 CSS3 吗 如果我计划仅在 Windows 操作系统上使用我的应用程序 这是一个执行一些基本文件处理的简单应用程序 HTA 是一个可行的选择吗 如果我使用简单的平面文件 文本文件 来存储 HTA 的数据 是否
  • 如何在Angular中实现多级路由?

    我正在做一个小项目 以便更多地了解 Angular 但我真的不知道如何实现多级路由 我读过文档关于路由器组件的新版本以及 Stack Overflow 上的一些其他主题 first second third 但我找不到解决我的问题的方法 让
  • 透明、无边框的 ProgressDialog

    我有一个ProgressDialog我已将其放置在屏幕底部 以免与徽标重叠 我想做的是为ProgressDialog删除背景和边框 我在这里没有任何运气 有谁知道如何应用这种风格 您是否尝试过将背景设置为透明颜色 这个答案给出了详细的代码示
  • 如何为 HttpClient 请求设置 Content-Type 标头?

    我正在尝试设置Content Type的标头HttpClient我调用的 API 所需的对象 我尝试设置Content Type像下面这样 using var httpClient new HttpClient httpClient Bas
  • 如何处理android中弹出窗口内按钮的onclick事件

    在我的应用程序中 我最初在屏幕上有一个按钮 然后在onclick按钮时 应该会打开一个弹出窗口 在弹出窗口中 我有一个图像按钮 并且onclick通过这个按钮 我想开始一个活动 弹出窗口打开 但我不明白如何处理onclick弹出窗口内的图像
  • 如何将科学记数法转换为小数形式?

    虽然很基本 但我在任何地方都找不到答案 如何禁用小标题中的科学记数法 并让小标题显示小数 My data 我有一个简单的小题 结果是lm gt broom tidy library tidyverse I used dput to get
  • 每侧有 2 个 y 轴且比例不同的 ggplot

    我需要在一个图表中绘制一个显示计数的条形图和一个显示比率的折线图 我可以单独完成这两个图表 但是当我将它们放在一起时 我会缩放第一层 即geom bar 与第二层重叠 即geom line 我可以移动轴吗geom line向右 Answer
  • 屏蔽 CALayer - iPhone

    我正在为 iPhone 创建一个自定义开 关切换开 关 类似于标准开关 并且我正在设置滑块的蒙版 但调用 myView layer setMask maskLayer 设置遮罩层相对于其遮罩层的位置 而不是相对于遮罩层的容器层的位置 对于这