ios 中通过图片的透明度来决定是否响应事件

iOS开发实战:使用UISlider调整图片透明度 在数字图像处理中,每个像素通常由红(Red)、绿(Green)、蓝(Blue)三个颜色通道组成,而Alpha通道则是用于表示该像素的不透明程度。Alpha值为0时,像素完全透明;为1时则完全不透明。这种机制允许图像在叠加时实现半透明效果,广泛应用于UI图层合成、视觉效果增强等领域。Alpha通道的引入使得图像可以拥有更丰富的视觉层次,尤其是在界面中多个元素叠加时,通过透明度控制可以实现柔和的过渡和视觉引导,从而提升整体的用户体验。本章系统地讲解了的使用方法及其背后的图形上下文机制。 阅读详情
我们在开发的时候会遇到图片有透明的地方,我们不想在点击透明的地方会响应事件,只是在点击不透明的地方才会响应事件,有两种方式可以进行解决,对于规律的图形来说,我们可以透过计算出不透明区域的范围在什么地方来控制是否响应事件,对于不规律的图形来说,我们可以通过判断透明度来控制是否响应事件,接下来代码就是通过透明度方法来控制的:
@implementation SJTTouchImageView
{
    NSData *data;
}
static NSUInteger alphaOffset(NSUInteger x,NSUInteger y,NSUInteger w){
    return y * w * 4 + x * 4;
}

NSData *getBitmapFromImage(UIImage *image){
    if (!image) {
        return nil;
    }
    
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    if (colorSpace == NULL) {
        return nil;
    }
    int width = image.size.width;
    int height = image.size.height;
    CGContextRef context = CGBitmapContextCreate(NULL, width, height, 8, width * 4, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedFirst);
    CGColorSpaceRelease(colorSpace);
    if (context == NULL) {
        return nil;
    }
    CGRect rect = (CGRect){.size = image.size};
    CGContextDrawImage(context, rect, image.CGImage);
    NSData *data = [NSData dataWithBytes:CGBitmapContextGetData(context) length:(width *height *4)];
    CGContextRelease(context);
    return data;
}

- (instancetype)initWithImage:(UIImage *)image
{
    if (self = [super initWithImage:image]) {
        self.userInteractionEnabled = YES;
        data = getBitmapFromImage(image);
    }
    return self;
}

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    if (!CGRectContainsPoint(self.bounds, point)) {
        return NO;
    }
    Byte *bytes = (Byte *)data.bytes;
    NSUInteger offset = alphaOffset(point.x, point.y, self.image.size.width);
    return (bytes[offset] > 85);
}

@end

https://github.com/SunAndMa/alphaTapEvent

实现iOS擦除图片功能的实战指南 离屏渲染(Off-Screen Rendering)是一种将渲染操作从主线程移动到后台线程的技术,其核心目的是为了减轻主线程的负担,提高渲染效率。在iOS开发中,图形渲染通常在主线程中进行,这意味着所有与界面更新相关的操作都在主线程中完成。然而,当渲染操作复杂或频繁时,主线程的性能将会受到影响,从而导致界面卡顿和响应迟缓。为了优化渲染性能,开发者可以使用离屏渲染技术,将部分渲染操作放在后台线程进行。 阅读详情

相关推荐

影刀rpa的使用一--读取excel表格数据并循环出每一项

1、全部展示2、运行结果展示之后可以按照各自的需求对excel中取出的数据进行处理。

qq_69268437的博客 1万+

iOS实现UIImageView透明区域点击事件穿透

问题 最近要在iPad上实现一个很独特的功能,简单描述一下就是要显示一个带有半透明背景的弹出界面,在其上加一个不规则形状的图片,手指点击这个弹出界面的半透明区域就退出这个弹出界面。 问题是UED/美工不会提供纯粹的不规则形状切图,实际只能给出的是以不规则形状加透明区域的矩形切图,这就带来另外一个要求:点击矩形切图的透明区域也要退出弹出界面。这就有点难办了,透明区域也是不规则形状的,该怎

博客 2705

射频总集篇:(不断更新)

射频每一章涉及到的重点理论/设计方法 CHAPTER 1 传输线理论 输入阻抗Zin,负载阻抗ZL,驻波比ρ,反射系数 CHAPTER 2 波导 矩形波导,圆波导,同轴线 CHAPTER 3 微型带状传输线 微带线的参数设计,带状线的参数设计 CHAPTER 4 ...

jieyannn的博客 1919

IOS 中透明度的设置问题

今天写IOS程序发现了这样的一个现象: 如果某个控件A下面的控件B设置了透明度,那个控件A无论是否设置了透明度,都会表现出来控件B的透明度。 这个问题好烦人,处处都是个这。马蛋! 找解决方法吧,哎~~~,上网找啊找啊,终于在一个在BAT都工作过的大牛的博客里找到了办法: 父控件B调用 [UIColor colorWithWhite:(NSFloat) alpha:NSFloat] 这样就...

路人甲的路人乙的专栏 2811

《中国电信运营商骨干网:历史、现状与未来演进》系列 第一篇:中国骨干网全景图:一级运营商与专用网络的演进

揭秘国家信息高速公路!一文读懂什么是骨干网,它如何支撑我们的数字生活,以及电信、联通、移动、广电等巨头如何构建这张“国家级动脉”。

maqh_csdn的博客 2036

IO Virtualization with Virtio.part 2 [十三]

通过对virtio_device_id 中的 device 和 vendor 的值进行比较,我们找到对应的 virtio 驱动,由于这里我们使用 i2c virtio 为例,所以调用 virtio_i2c_probe 进行 virtio i2c 设备的初始化。在和 virtio mmio 设备交互时我们会读取 VIRTIO_MMIO_DEVICE_ID 和 VIRTIO_MMIO_VENDOR_ID,并将其值写入 virtio_device_id 中,这个就会用作后面和 virtio 设备驱动的匹配参数。

cxjczy1990的博客 1211

实现图片浏览,改变透明度的方法

简单的图片浏览器制作 例子中的图片浏览器既可以改变图片的透明度,也可以根据用户在图片上选定的某一区域,对其进行显示,用于查看图片的局部细节。 在activity_main.xml中: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/

weixin_46157140的博客 920

机器人中的数值优化(一)—— 数学优化、凸集合与凸函数

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例。

慕羽★的博客 2521

如何判断图片为透明图片 getImageData rgba

let _img = new Image(), _canvas = window.document.createElement("canvas"), _context = _canvas.getContext("2d"); _img.onload = function ...

weixin_41017246的博客 5004

2026年紫光同创数字IC笔试试卷带答案

FPGA基础知识与设计要点摘要 本文围绕FPGA与数字IC设计核心概念,通过单选题、波形分析题、多选题和简答题形式,系统梳理了以下关键知识点: FPGA基础架构 查找表(LUT)是实现组合逻辑的基本单元(题1) CLB包含LUT、触发器和进位链,后者加速算术运算(题6,10) 布局布线优化是减少关键路径延迟的核心方法(题7) 时序分析要点 建立时间(时钟沿前数据需稳定)与保持时间(时钟沿后需保持)的定义(题2,简答1) 亚稳态成因及两级同步器处理跨时钟域信号的方法(多选题1,波形题5) 特殊设计技术 异步复

Open 114

Claude Code 100个真实案例 - 用AI绘制CAD机械图纸(工程师看了直呼内行)

本案例展示如何使用 Claude Code 配合 Python 的 `ezdxf` 库,从零开始生成专业级 CAD 机械图纸。我们将绘制一个完整的法兰盘零件图,包含主视图、俯视图、标注尺寸、粗糙度标记和标题栏,最终生成标准 DXF 文件,可直接在 AutoCAD 或 FreeCAD 中打开编辑。

yueyeguzhuo的专栏 893

处理图片透明操作

// <summary> /// 处理图片透明操作 /// </summary> /// <param name="srcImage">原始图片</param> /// <param name="opacity">透明度(0.0---1.0)</param> /// <retu...

dengxuan4036的博客 197

浅谈innovus Update io latency相关作用

同样我们使用update io latency,工具取launch clock latency负值反标到clock端口上,同时认为capture clock latency与launch clock latency相等,这样可以相互抵消,这样setup time slack = T – Tsetup -Tcomb – Toutput_delay,因此采用update io latency后,reg2out timing path的setup check变得真实些。图3 in2reg示意图。

芯冰乐 473

iOS事件传递和响应

事件传递过程:从application传递到最上层view,如下图事件传递过程事件响应处理过程:从最上层view开始向下传递,与事件传递方向相反事件响应过程。

鹏仔的技术博客 2127

数学建模模型总结

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

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

IOS —— 事件的传递链和响应链

汇报学习成果时间到。 今天接触的是IOS中事件传递链以及响应链本身。 事不宜迟马上开始把 1.事件的传递、响应链原理 事件产生、传递的核心为:UIResponder 响应对象 在IOS代码中并不是任何对象都能响应对象,必须是继承了UIResponder的对象才能接受以及处理事件。这些对象我们称之为“响应对象” 响应对象有三 1.UIApplication 2.UIVi...

banlong6430的博客 313

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

iOS 事件的产生、传递、响应

一、事件的产生和传递 1.1.事件的产生 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中为什么是队列而不是栈?因为队列的特定是先进先出,先产生的事件先处理才符合常理,所以把事件添加到队列。 UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常,先发送事件给应用程序的主窗口(keyWindow)。 主窗口会在...

weixin_34088583的博客 88

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS开发-UISlider改变图片透明度

拖动条是通过滑块的位置来标识数值,而且拖动条允许用户拖动滑块来改变值。因此,拖动条通常用于对系统的某种数值进行调节,如调节亮度,透明度,音量等。 一、属性介绍 @property(nonatomic) float value; //设置当前slider的值,默认是0. @property(nonatomic,getter=isContinuous) BOOL continuous...

weixin_30732825的博客 129

仿抖音短视频系统源码实现图片浏览,改变透明度的方法

在activity_main.xml中: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" and

云豹网络科技 316

UIButton透明度

超级猜图游戏图片放大效果图。 实现效果:点击图像或者大图按钮,图片会以动画的方式放大到宽度等于屏幕宽度,图片周围蒙上一层深色背景,点击背景的任何地方可以还原图片,但是不能响应背景后面的Action。 背景部分是可以点击的,那么它就是UIButton。在需要的时候创建一个UIButton,大小与屏幕的frame相等,背景色为浅色,背景色透明度为0.5,然后将Button加到self.vi

jiaoguifeng的专栏 2416

UIImageView响应点击事件

有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳转视图,想到的第一个方法就是用UIButton,将Button的背景图片属性设置为该图片,效果达到了,但不是最好的方法,直接触发方法 定义Image的对象 [cpp] view plaincopy UIImageView *imgView =[[UIImageView

CharlesBein_卞 6823

通过UISlider改变图片透明度,并且通过UISwitch控制UISlider

//定义变量 { UISwitch *switc; UISlider *slide; UIImageView *imgView; } //在viewDidLoad中实现 self.view.backgroundColor = [UIColor whiteColor]; self.title = @"改变图片透明度"; switc = [[UISwitch all

dujianjunqwer的博客 411

iOS事件处理系列1-事件的种类与处理流程

在现代生物学中,生命体除了需要具有自身繁殖、生长发育、新陈代谢、遗传变异等特性之外,还要具备一个必不可少的特性就是对外界刺激产生反应。同理,App就好似一个生命体,它也需要能够对外部事件进行响应处理,这也是本系列文章的主要讲解内容。苹果的官方文档《Event Handling Guide for iOS》对事件处理做了非常详尽清晰的解释,建议大家仔细研读。本系列文章主要是对该文档的进一步解读和讨论,

Puzhi的专栏 4901

UIButton无法响应点击事件问题

问题描述: 当设置UIButton的backgroundColor = [UIColor clearColor]时,如果此时按钮上仅有一张图片并且按钮图片较小,如下图 ‘ 此时点击按钮除图片之外的位置将不会触发按钮事件,解决办法为将UIButton的backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.

tuyuanxiu的专栏 798
上一篇: ios 贝塞尔曲线轨迹更加平滑
下一篇: ios 将滚动视图中的图片拉出
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值