IOS-升级101 非RectButton(透明区域不可点击View)

iOS按钮控件 OBShapedButton.zip iOS按钮控件 OBShapedButton ,OBShapedButton是一个开源的非正规矩形的iOS按钮控件,是UIButton的子类,可以用... 立即下载
结论:
     用OBShapedButton:https://github.com/ole/OBShapedButton 就好了。方法是通过检验点击位置对应图片的alpha通道值决定是否响应(通过PointInseid返回值(返回no则系统认为不在bounds 就不处理了))。

缘由:
项目中我们会遇到 使用了一张图片作为button的Image或者BackgroudImage 这些图片存在alpha = 0的区域,点击透明区域一样可以触发按钮效果。这不是我们想要的,我们想要的是 点击透明区域并不触发此UIcontrol!

资料:
OBShapedButton:https://github.com/ole/OBShapedButton
MLIgnoreTransparentButton:https://github.com/molon/MLIgnoreTransparentButton

分析了如上两个github源码之后理清了思路。
key:alpha==0

思路如下:
@1 每次点击的时候获取当前点击的touchPoint
@2 获取对应control的Image 与 backgroundImage 
@3 将其绘制到CGContext下
@4 创建CGContext 设置CGContext的bytes 每个像素点对应4个byte(不同的colorSplace可能不同) 分别为 Red Green Blue Alpha (这边Context一般只生成1像素的大小 并通过transformCTM来移动context 将点击的点移动到生成的这一个像素上 取值)
@5 将image会知道创建的CGcontext上
@6 当前touch点的alpha是否等于0
@7 根据alpha返回的值 决定是否响应此次点击
@8 通过- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event  决定是否响应此次点击(注意:先执行super此方法以排除点击out of bounds的情况。)




注意:hitTest会递归调用自己坐标系统下的view 是否响应。

注:一次点击会递归两次hitTest
原因是因为 UITouchPhaseBegin 与 UITouchPhaseEnd
hitTest中的event是无法取出 UITouch 可以通过hook全局的监听出来。
且根据打印结果看 hitTest执行完才产生产生对应UITouchPhaseBegin 与 UITouchPhaseEnd
(也就是说 touchphase 是两段的 但当hitTest执行完才被归纳)。
OBShapedButton:一个UIButton子类,可用于非矩形按钮形状 OBShapedButton OBShapedButton是针对非矩形按钮形状优化的UIButton子类。 OBShapedButton的实例仅在分配给UIControlStateNormal的按钮的图像不透明的区域中对触摸做出响应。 如何安装 通过CocoaPods安装 如果可能的话,你应该安装OBShapedButton通过 : $ edit Podfile platform :ios pod 'OBShapedButton' 手动安装 如果由于某种原因无法使用CocoaPods,请手动将OBShapedButton.h,OBShapedButton.m,UIImage + ColorAtPixel.h和UIImage + ColorAtPixel.m添加到Xcode项目中。 用法 照常使用UIButton在Interface Builder中设计UI。 将“按钮”类型设置为“自定 立即下载

相关推荐

ios-利用OBShapedButton实现不规则按钮的方法.zip

利用第三方库OBShapedButton实现不规则按钮的方法。 可以用来实现例如“地图选择具体区域”,“智能导诊”等功能。

非正规矩形的按钮

OBShapedButton是一个开源的非正规矩形的iOS按钮控件,是UIButton的子类,可以用于iPhone、iPad。虽然可以用图标来实现非矩形的按钮形状效果,但是使用OBShapedButton的好处是界面响应消息的区域只是按钮绘制的地方。

isfly_cool的专栏 1014

计算机毕业设计springboot股票模拟交易系统的设计与实现u6m959【附源码+数据库+部署+LW】

选题背景: 随着互联网和金融科技的快速发展,股票市场成为了吸引人们关注和参与的重要领域之一。越来越多的人开始对股票投资感兴趣,希望通过交易股票来获取收益。然而,对于初学者来说,股票市场的复杂性和风险往往让他们望而却步。因此,设计和实现一个股票模拟交易系统,可以帮助初学者更好地理解和掌握股票交易的规则和技巧,提高他们的投资决策能力。 意义: 股票模拟交易系统的设计与实现具有以下几个重要意义: 提供实践机会:股票模拟交易系统为投资者提供了一个实践的平台,使他们能够在真实市场环境下进行模拟交易,了解股票市场的

gp12081的博客 1760

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

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

博客 2705

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 427

JS逆向实战:从宿务航空机票搜索到参数签名算法解析

在现代Web应用开发中,前端与后端的数据交互安全是核心技术环节。其原理通常涉及参数签名、令牌验证等机制,用于防止未授权访问和数据篡改。这些技术的核心价值在于保障接口调用的合法性与数据完整性,广泛应用于电商、金融、旅行预订等对数据安全要求较高的场景。以机票搜索为例,网站常通过动态生成的签名参数来验证请求来源。本文以宿务太平洋航空为案例,深入解析其搜索请求中关键参数(如signature)的生成逻辑,并演示如何通过浏览器开发者工具进行断点调试、变量追踪,最终使用Node.js与crypto-js库本地复现完整请

weixin_26642481的博客 751

iOS 使点击事件穿透透明的UIView

通过实例讲解,如图(三个深灰色按钮处于同一个contentView中): 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击事件。 解决方法如下(将此方法增加到这个contentView类中即可): ...

weixin_30276935的博客 735

URScript介绍

优傲机器人(Universal Robots)是丹麦工业协作机器人制造商,2005年成立,2015年被泰瑞达收购。其自研编程语言URScript基于Python语法,专为机器人控制优化,支持运动指令、IO控制等功能,具有类Python的简洁语法和实时性特点。URScript提供丰富的API,支持变量赋值、条件判断、循环及函数定义等编程结构,参数按值传递。用户可通过该语言在Polyscope界面编写程序,实现自动化任务。目前优傲在全球20多个办事处为多国客户提供服务。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 603

开发库整理

图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。       下载:https://github.com/mwaterfall/MWPhotoBrowser

追梦 9586

车载测试工程师必备:5分钟搞定CANoe台架搭建(附DBC导入技巧)

本文为车载测试工程师提供快速搭建CANoe测试台架的实用指南,涵盖硬件连接、DBC文件导入及常见报错解决方案。通过详细步骤和高效技巧,帮助工程师在5分钟内完成台架搭建,提升车载测试效率,特别适合紧急功能验证场景。

potato的博客 812

Python爬虫实战:利用Scrapy+Playwright高效爬取TED演讲数据

在当今信息爆炸的时代,TED演讲作为全球知名的思想传播平台,汇聚了各领域顶尖人才的精彩分享。对于数据分析师、研究人员或内容创作者来说,获取TED演讲的完整数据集具有重要价值。本文将详细介绍如何使用Python中最先进的爬虫技术组合——Scrapy框架配合Playwright浏览器自动化工具,高效爬取TED演讲的完整数据。传统爬虫技术在处理现代动态网页时面临诸多挑战,而本文将展示如何利用最新工具解决这些问题。

2201_76125261的博客 205

UIButton 使用不规则图片,以及 长按短按事件

不规则按钮的添加,我这里使用的第三方插件OBShapedbutton,感谢Ole Begemann 长按和短按的思路是,短按直接使用UIButton 的addtarge 方法 长按使用长按手势

码农Peter 5180

ICM20948 DMP代码详解(54)

ICM20948 DMP代码详解(54)

phmatthaus的专栏 424

ImageButton和ImageView设置点击透明区域不响应

思路 ImageView和ImageButton都可以设置background和设置src,两者的区别自行度娘。由于两者的不同,获取它们的图片资源的方法也不同。倘若设置的是background,那么需要先getBackground(),然后把获取到的Drawable强制转换为BitmapDrawable,就可以获取bitamp,最后判断event的点击坐标是否在bitmap像素范围里。倘若设置的是...

weixin_30872867的博客 244

SAP Fiori 个性化数据持久化实战:从 Personalizer 到 Variant 的完整设计思路

摘要:SAPUI5的Personalization服务用于持久化用户界面交互偏好(如表格列顺序、筛选条件),而非业务数据。它提供两种模式:Direct Mode适合单一实体存储,Container Mode支持多实体和变体管理。开发时需注意数据存储位置差异(本地调试用local storage,生产环境由前端服务器处理),避免与业务数据或Bookmark服务混淆。典型应用场景包括表格布局保存和查询方案管理,需根据需求选择模式。该服务能有效提升Fiori应用的用户体验连续性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 130

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

iOS 为View添加蒙版 当点击背景View移除

在自定义View中 设置背景蒙版 bgView = [[UIImageView alloc] initWithFrame:UIScreen.mainScreen.bounds]; bgView.image = [UIImage imageWithColor:RGB_A(17, 17, 17, .5)]; bgView.userInteractionEnabled = YES; bgView.tag = 1; [[UI...

iOS野狼的专栏 743

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Opencv中使用Rect的函数创建按钮和文字

#include #include #include #include using namespace cv; using namespace std; Mat img; Rect drawString(Mat img, string text, Point coord, Scalar color, float fontScale = 0.6f, int thickness =

weixin_36368407的博客 2047

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

第三方框架简介ios

第三方框架简介iOS图像1.图片浏览控件MWPhotoBrowser       实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。 下载:https://github.com/mwaterfall/MWPhotoBrowser        目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散

q408896553的博客 3万+

ios UIview 设置透明度遇到的问题

需求是半透明view上有一个label要求label文字不透明。 当时直接设置view.alpha = 0.7,这就导致label的文字也成半透明的了。 后来的办法是设置view的backgroudcolor的r g b a  的a为0.7解决了这个问题。

li198847的博客 1322

摄影师张梦格App项目总结

昨天张梦格App的第二版已经提交上线审核。从第一天接手项目开始到第一次、第二次被苹果打回,再到第一版、第二版上线,我经历了一个完整的App从开发到上线的全过程。我想应该对这个项目做一些总结,把自己在这个项目中的收获记录下来。帮助加深记忆,巩固和提高技术 一、代码管理工具----分布式版本控制系统github,在上边新建一个项目的代码仓库,把代码同步到git服务器上。下边介绍...

weixin_30483697的博客 270

ios添加一个透明视图图使得父视图实现部分透明(在视图上面抠一个透明的洞)...

如上图需要在视图中实现中间部分透明实现代码如下: 创建蒙版视图继承于UIView #import "LXQuaereEditBoarder.h" @interface LXQuaereEditBoarder : UIView @end #import "LXQuaereEditBoarder.m" @implementation LXQuaereEditB...

weixin_30439131的博客 489

iOS 不规则形状选择 svg方案,原生方案。

公司项目要实现车辆部件选择的功能,由于各个部件形状不规则,所以原生控件很难满足需求。设计图类似下图:   点选车辆的部件要求变色,并记录点选状态以及其他一些属性的记录。   初始看到这个设计第一感觉是原生控件肯定不支持,需要自己画控件(shaplayer+path),但是再看看这些控件的形状,感觉全都自己画出来貌似不现实,很费劲。后来想到另一种方法,用原生的button,UI给切图,然后一...

Burt_Kingdom的博客 2670

黑马程序员—IOS按钮用法与属性实例

OBShapedButton是一个开源的非正规矩形的iOS按钮控件,是UIButton的子类,可以用于iPhone、iPad。虽然可以用图标来实现非矩形的按钮形状效果,但是使用OBShapedButton的好处是界面响应消息的区域只是按钮绘制的地方。

heyuchang666的专栏 578

iOS 开发中按钮不能点击的几种情况

上午被按钮的一个点击不能触发事件折腾了许久。现已解决,总结并分享出来。希望能对遇到这种情况的人有所帮助。 1、UIButton不能点击情况的第一种是,你将button添加到一个不能响应点击事件的View里。如你将button添加到UIImageView中,解决办法只需将UIImageView的 userInteractionEnabled设为YES即可。 2、UIButton不能点击

u012655309的专栏 1万+
上一篇: IOS 升级78 AutoLayout 概述 (二)
下一篇: IOS-升级102 全局监听SendEvent
iPoolo
博客等级 码龄17年 2粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值