在 UIImageView 之上绘图以使图像透明

2024-03-30

我正在开发一个 iPhone 应用程序,其中当用户在图像上移动手指时,我需要通过将其 alpha 级别设置为 0 来使图像的一部分透明。基本上,如果您碰巧知道应用程序商店应用程序 iSteam,用户应该能够在顶部图像上移动手指,这将使背景图像透明。

目前我正在使用两个 UIImageView。一个保存背景图像,另一个在其之上保存较暗的图像。现在用户应该能够在这个较暗的图像上绘制随机曲线,这将使背景图像的部分出现在顶部。我无法弄清楚应该如何使两个 UIImageView 中最顶部的顶部图像透明。

对此有什么想法吗?另外我应该用什么来做这个?石英或 Open GL。我是 iPhone 应用程序开发的新手,对这些 API 完全不了解,因此专家的一些指导肯定会帮助我在 iPhone SDK 开发方面取得进展。


UIImageView 有一个层,您可以将其称为它的layer并在您将项目链接到 QuartzCore 时进行交谈。当用户移动手指时,在不透明颜色填充的图形上下文中剪切一个与 UIImageView 大小相同的清晰形状,将其转换为 CGImageRef,将其设置为 CALayercontents(同样,这个 CALayer 需要与 UIImageView 具有相同的大小),并将该层设置为 UIImageView 的layer.mask。无论遮罩是透明的,都会在图层中打出一个透明的孔,这意味着视图,这意味着 UIImageView 显示的图像。 (如果这不起作用,因为 UIImageView 不喜欢你干扰它的层,你可以使用 UIImageView 的超级视图。)

编辑(第二天)-这是在中心打一个圆孔的层委托的示例代码:

-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)c {
    CGRect r = CGContextGetClipBoundingBox(c);
    CGRect r2 = CGRectInset(r, r.size.width/2.0 - 10, r.size.height/2.0 - 10);

    UIImage* maskim;
    {
        UIGraphicsBeginImageContextWithOptions(r.size, NO, 0);
        CGContextRef c = UIGraphicsGetCurrentContext();
        CGContextAddEllipseInRect(c, r2);
        CGContextAddRect(c, r);
        CGContextEOClip(c);
        CGContextSetFillColorWithColor(c, [UIColor blackColor].CGColor);
        CGContextFillRect(c, r);
        maskim = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    }

    CALayer* mask = [CALayer layer];
    mask.frame = r;
    mask.contents = (id)maskim.CGImage;
    layer.mask = mask;
}

因此,如果该层是视图的层,并且 UIImageView 是该视图的子视图,则会在 UIImageView 中打一个洞。

这是结果的屏幕截图:

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

在 UIImageView 之上绘图以使图像透明 的相关文章

  • 如何清除代码中的 NSLog 输出?

    有没有办法清除代码中的控制台输出 thanks 我喜欢的快捷方式 Simply USE K Keyboard Shortcut when you want to clear the NSLOG Data
  • 更改导航项(栏)的背景颜色

    有没有一种简单的方法可以更改视图顶部导航项的背景颜色 我有一个基于导航的应用程序 我只希望一个视图获得另一种背景颜色 我主要使用 IB 创建视图 我找到了以下解决方案 未测试 float r 10 float g 55 float b 13
  • 重叠的装载机圆

    我试图重现苹果为应用程序 活动 制作的重叠圆圈 见下图 如果您使用标准贝塞尔路径 起始 结束位置将仅在 0 到 2PI 之间产生影响 例如 如果您尝试填充 4PI 即使使用一些阴影 则无法模拟重叠加载 如何制作类似于苹果解决方案的东西来创建
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 如何解决malloc_error_break?

    我在 iOS 3 0 模拟器上遇到此错误 但在 3 1 3 和 3 2 模拟器上没有遇到此错误 创建符号断点后malloc error break 我在日志中看到了这一点 Session started at 2010 02 13 19 1
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview
  • Objective-C:int值无故改变

    Objective C 我需要帮助保留 int 的值 无需我的命令 它就在我身上发生变化 最初的问题是 如何声明和保留 int 这在另一篇文章中得到了满足 Objective C 如何声明和保留 int https stackoverflo
  • 如何从 AFNetworking 和 AFJSONRequestOperation 获取可变字典?

    我将 JSONKit 与 AFNetworking 的 AFHTTPClient 带有 AFJSONRequestOperation 一起使用 我似乎无法弄清楚如何触发使用 JSONKit 的 mutableObjectFrom 方法 而不
  • 自定义 UITableViewCell 选择样式?

    当我点击我的UITableViewCell 当我单击单元格时 背景部分 我的背景图像未覆盖的区域 会变成蓝色 另外 所有的UILabel单击时单元格上的 s 变为白色 这就是我想要的 然而 我不想要的是当我点击它时的蓝色背景 但如果我这样做
  • 错误域=AVFoundationErrorDomain代码=-11814“无法记录”

    它不断给我错误 错误域 AVFoundationErrorDomain代码 11814 无法记录 我不确定问题是什么 我试图在拍照后计数器达到 1 时录制声音 static int counter counter will always b
  • 推入 UINavigationController 时隐藏 FBFriendPickerViewController 导航栏

    介绍一个实例FBFriendPickerViewController using presentViewController animated completion 非常简单 该类似乎是针对该用例的 但是 我想推送一个实例FBFriendP
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • UIScrollView - 启用分页后,我可以“更改”页面宽度吗?

    将滚动视图 将 pagingEnabled 设置为 YES 将页面宽度设置为滚动视图边界以外的其他值的最简单方法是什么 让我举个例子 假设我有一个包含 10 个项目的滚动视图 每个项目的宽度为 150 像素 而我的滚动视图的宽度为 300
  • 在 Swift 中使用 CommonCrypto 解密时出现问题

    我在一家Swift only加密 解密Extension for String and NSData 并且 crypt 部分的工作基于 Zaph 在链接问题中提供的答案 在 Swift 中使用 CCCrypt CommonCrypt 时出现
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • 如何在iOS应用程序中捕获用户的手写签名[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在我的应用程序中 用户将请求客户提供数字化的手写签名 我需要能够在用户在触摸屏上 书写 签名时捕获签名
  • 如何检查 BOOL 是否为空?

    有没有办法在将值分配给 BOOL 之前检查该值是否为 NULL Nil 例如 我在 NSDictionary 中有一个值可以是 TRUE FALSE NULL mySTUser current user following results
  • Objective-C中如何使继承的类能够看到父类的隐藏方法[重复]

    这个问题在这里已经有答案了 我有两个类 Class1 和 Class2 第二个类继承自第一个类 我需要重写 Class1 的 update 方法来实现我的目标 继承方法中 update方法的改变是在代码中间进行的 所以我不能使用 超级更新
  • OpenGL ES 片段着色器显然不可能返回白色

    这是一个奇怪的现象 我有一个片段着色器 据我所知只能返回黑色或红色 但它将像素渲染为白色 如果我删除一根特定的线 它会返回我期望的颜色 它适用于 WebGL 但不适用于 Raspberry Pi 上的 OpenGL ES 这是着色器代码 如

随机推荐

  • Newtonsoft 对象 → 获取 JSON 字符串

    我有一个由 Newtonsoft 的 JSON 序列化器创建的对象 我需要获取用于创建对象的 JSON 字符串 如何将对象序列化为简单的 JSON 字符串 尝试这个 public string jsonOut Returns JSON st
  • 由于 #ifdef,ctags 在带有不平衡大括号的源文件中被阻塞

    我在用ctags生成一个tags我正在处理的 C 项目的文件 但文件中缺少许多函数 这似乎是由于使用源文件中的大括号不平衡造成的 ifdef 一个 简化的 例子 include
  • 如何旋转 3D 散点图

    下面的代码使用 scatterplot3d 函数来运行高度 重量和体积的 3D 散点图 其中点是 1 6 之间的类值 角度目前为 45 度 我知道我可以通过改变角度来倾斜绘图 我应该使用什么代码将绘图向左或向右旋转 以便我可以提供绘图的多个
  • Android模拟器加载但不加载程序?

    我很确定我已经安装了所有必要的东西 我创建了 AVD 并尝试运行 SDK 中包含的示例应用程序之一 Jetboy 当我点击运行时 程序模拟器启动并最终加载 android 但没有应用程序启动 这是输出 2011 12 14 16 16 24
  • 标记为“已弃用”的 API 方法什么时候才会真正消失?

    我正在代码审查我的一位同事刚刚所做的更改 他添加了一堆调用Date toMonth Date toYear 和其他已弃用的Date方法 所有这些方法在 JDK 1 1 中均已弃用 但他坚持认为使用它们是可以的 因为它们还没有消失 我们正在使
  • C++ Console Application1.exe 已触发断点

    当我尝试设置时 cub SetArray cube 我收到一个错误 Console Application1 exe has triggered a breakpoint 我做错了什么 当我尝试调试时cub gt cubesarray我得到
  • 合并除关键字段之外的所有相同行,并使关键字段成为一个范围[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我看了很多帖子 但还没有找到我要找的东西 我不确定如何获取以下示例数据 host1 input nic1 ip1 ip2 PROT 3
  • Android adb shell am startservice:未找到错误

    我正在尝试从 adb shell 启动该服务 已经有类似的问题了 如何从 adb shell 启动和停止 android 服务 https stackoverflow com questions 7415997 how to start a
  • 关于Oracle解释计划中成本的问题

    当 Oracle 估算某些查询的 成本 时 它实际上会查看表中的数据量 行 吗 例如 如果我对员工进行全表扫描 查找 name Bob 它是通过计算现有行数来估计成本 还是始终是设定成本 成本优化器使用段 表和索引 统计信息以及系统 CPU
  • Python:对象到str的隐式转换?

    给出以下代码 class A def init self self b B def repr self return a format self b return a return a TypeError Can t convert B o
  • 在 VueJS 中取消选中 CheckBox 及其标签

    我试图取消选中在 VueJs 中使用其标签选中的复选框 DEMO new Vue el app data checkedNames checkedName true methods uncheck function this checked
  • SqlCommandBuilder 如何执行其操作以及如何阻止 ReSharper 删除它的建议?

    我不明白怎么办SqlCommandBuilder http msdn microsoft com en us library system data sqlclient sqlcommandbuilder aspx做它的事 我有以下代码 p
  • JPA 2.1 ConstructorResult 导致 ClassCastException

    结果集中的对象被转换为 对象 而不是我在 SQLResultSetMapping 对象中指定的对象 我正在尝试获取 ConstructorResult 的句柄 并创建了一个包含简单联接的查询 并尝试获取结果集并循环打印它 以确保它是正确的
  • 我如何检查 base64 字符串是否是文件(什么类型?)?

    我参加了 Spentalkux 挑战https 2020 ractf co uk https 2020 ractf co uk 这是我第一次参加CTF挑战 所以我解决了https github com W3rni0 RACTF 2020 b
  • MVC2 --> MVC3 升级

    今天MVC3发布了 我想问一下是否有人在从MVC2升级到MVC3 不改变视图中的任何内容 的过程中遇到过问题 我目前正在使用 EF4 Telerik 扩展 我应该升级 还是应该等待 我目前负责的项目的首席开发人员安装并升级了 MVC2 到
  • Rvest:获取节点文本而不是其子节点的文本

    方法html text 来自 R 包 rvest 连接节点的文本和它的所有孩子 我想提取只有父亲的文字 对于以下示例 html text gives 你好再见 我想得到只是GOODBYE 我怎么才能得到它 div class joke di
  • 如果所有子级都满足条件,则选择父级

    我的表格设置如下 Parent id Child id parent id x y 我想找到父母 或者不同的parent id 如果allChild 中包含给定parent id 的行满足涉及x 和y 的条件 在我的例子中x y 例如 Pa
  • GPS 坐标(以度为单位)来计算距离

    在iPhone上 我以十进制度数获取用户的位置 例如 纬度39 470920和经度 0 373192 也就是A点 我需要用另一个 GPS 坐标 同样以十进制表示 B 点创建一条线 然后 计算从 A 到 B 的线与另一个点 C 之间的距离 垂
  • 如何编译jade模板文件来获取字符串?

    我的玉模板文件中有一个视图逻辑 如何将模型传递给j ade并获取html以通过电子邮件进一步发送 您可以尝试以下操作 var jade require jade fs require fs fs readFile template jade
  • 在 UIImageView 之上绘图以使图像透明

    我正在开发一个 iPhone 应用程序 其中当用户在图像上移动手指时 我需要通过将其 alpha 级别设置为 0 来使图像的一部分透明 基本上 如果您碰巧知道应用程序商店应用程序 iSteam 用户应该能够在顶部图像上移动手指 这将使背景图