首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何检查在Bezier子视图上显示的多个bezier子视图中的UIView路径中的触摸事件?

在检查在Bezier子视图上显示的多个bezier子视图中的UIView路径中的触摸事件时,可以通过以下步骤进行:

  1. 创建一个自定义的UIView子类,作为Bezier子视图的父视图,并将其设置为Bezier子视图的父视图。
  2. 在自定义的UIView子类中重写hitTest(_:with:)方法,该方法用于检测触摸事件。
  3. hitTest(_:with:)方法中,遍历所有的Bezier子视图,并调用每个Bezier子视图的path属性来获取其路径。
  4. 使用UIBezierPathcontains(_:)方法,将触摸点作为参数传入,判断触摸点是否在每个Bezier子视图的路径内。
  5. 如果触摸点在某个Bezier子视图的路径内,则返回该Bezier子视图;否则,返回nil。
  6. 在自定义的UIView子类中,可以根据需要处理触摸事件的逻辑,例如执行相应的操作或者将触摸事件传递给其他视图。

以下是一个示例代码:

代码语言:txt
复制
class BezierContainerView: UIView {
    var bezierViews: [UIView] = [] // 存储所有的Bezier子视图
    
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        for bezierView in bezierViews {
            if let bezierPath = bezierView.layer.mask?.path,
               bezierPath.contains(point) {
                return bezierView
            }
        }
        return nil
    }
}

// 在使用时,将Bezier子视图添加到BezierContainerView中
let containerView = BezierContainerView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
let bezierView1 = UIView(frame: CGRect(x: 50, y: 50, width: 100, height: 100))
let bezierView2 = UIView(frame: CGRect(x: 150, y: 150, width: 100, height: 100))
containerView.bezierViews = [bezierView1, bezierView2]

在上述示例中,BezierContainerView是自定义的UIView子类,用于检测触摸事件。bezierViews数组存储了所有的Bezier子视图。在hitTest(_:with:)方法中,遍历bezierViews数组,判断触摸点是否在每个Bezier子视图的路径内,如果是,则返回该Bezier子视图。

请注意,这只是一个简单的示例,实际使用中可能需要根据具体需求进行适当的修改和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS开发之画图板(贝塞尔曲线)

画图板截图如下,上面的白板就是我们画图板,是自己封装好一个UIView,下面会详细介绍如何封装这个画图板,下面的控件用来控制我们画图板属性以及Undo,Redo和保存功能。...一.封装画图板     其实上面的白板就是一继承于UiView一个子类,我们可以在这个子类添加我们画图板相应属性和方法,然后实例化成对象添加到ViewController,当然为了省事添加白板时候是通过...,相当于两个栈,把显示线条出栈,进入为不显示线条栈,每执行一次此操作显示线条栈元素会少一条而不显示线条栈中会多一条,大致就这个意思吧,代码如下: 1 //UnDo操作 2 -(void)backImage...BezierPath,把触摸起点设置成BezierPath起点,并把将要画出线条以及线条对应属性封装成字典添加到显示,代码如下 1 -(void)touchesBegan:(NSSet *)...locationInView:self]; 9 10 //把刚触摸点设置为bezier起点 11 [self.bezier moveToPoint:point]; 12

1.5K100

iOS可视化动态绘制连通图(Swift版)

当然本篇博客在画图时我们使用Bezier曲线来画,因为之前也聊过关于Bezier相关东西,所以今天就不对Bezier做过多赘述了。 今天博客我们有易到难大致分为三个部分。...核心就在于给每个节点View添加一个TouchesMoved事件,然后在TouchesMoved事件执行时,将触摸移动点设置成当前ViewCenter即可。这样我们就可以拖动每个节点View了。...在拖动节点View时,我们还需要将拖动事件回调到节点View父视图上,让父视图知道当前用户拖动是哪个View。接下来我们就来看一下节点View核心代码。...下方这段代码上一部分就是我们定义一个闭包类型,用来将节点View触摸事件回调给父视图。该闭包类型需要传一个参数,该参数就是当前ViewTag, 这样父视图就知道当前用户拖动是哪个节点了。...下方这段就是节点ViewTouchesMoved事件,在该事件我们获取到当前用户触摸移动坐标点,然后将该点赋值给当前节点ViewCenter,然后调用更新父视图闭包回调对象即可。

1.4K70

HarmonyOS-UIAbitity-枚举说明——【坚果派-红目香薰】

LineJoinStyle 名称 描述 Bevel 使用斜角连接路径段。 Miter 使用尖角连接路径段。 Round 使用圆角连接路径段。...Cancel 触摸事件取消时触发。 MouseButton 名称 描述 Left 鼠标左键。 Right 鼠标右键。 Middle 鼠标中键。 Back 鼠标左侧后退键。...BarState 名称 描述 Off 不显示。 On 常驻显示。 Auto 按需显示(触摸显示,2s后消失)。...EdgeEffect 名称 描述 Spring 弹性物理动效,滑动到边缘后可以根据初始速度或通过触摸事件继续滑动一段距离,松手后回弹。 Fade 阴影效果,滑动到边缘后会有圆弧状阴影。...RelateType 名称 描述 FILL 缩放当前组件以填充满父组件 FIT 缩放当前组件以自适应父组件 Visibility 名称 描述 Hidden 隐藏,但参与布局进行占位。

11610

IOS开发系列——UIView专题之五:常用开发技巧篇

事件队列,UIApplication会从事件队列取出触摸事件并传递给key window(当前接收用户事件窗口)处理,window对象首先会使用hitTest:withEvent:方法寻找此次Touch...window对象会在首先在view hierarchy顶级view上调用hitTest:withEvent:,此方法会在视图层级结构每个视图上调用pointInside:withEvent:,如果...如果一个视图区域超过父视图bound区域(父视图clipsToBounds属性为NO,这样超过父视图bound区域视图内容也会显示),那么正常情况下对子视图在父视图之外区域触摸操作不会被识别...view,返回在目标视图viewrect •- (CGRect)convertRect:(CGRect)recttoView:(UIView*)view; •//将rect从view中转换到当前视图中...,返回在当前视图中rect •- (CGRect)convertRect:(CGRect)rectfromView:(UIView*)view; 例把UITableViewCellsubview

98520

CSS3变形transform、过渡transition、动画animation学习

,继而投影到一个 2D 平面上 透视还可以直接定义成属性 perspective: ,但其是设置所有的元素有一个共同透视值 其对于 3D 变换来说至关重要,如果不指定透视,则 Z...空间中所有点将平铺到同一个 2D 平面,并且变换结果中将不存透视深概念。...transform-style  3D呈现 -- 规定被嵌套元素如何在 3D 空间中显示 perspective-origin  透视原点 -- 规定 3D 元素底部位置 backface-visibility...7-2) transform-style  设置内嵌元素在 3D 空间如何呈现。...综合animation ,可同时定义多个子属性 2. animation-name 动画名称,需与@keyframes设置一致 3. animation-duration 动画执行时间  <time

2.3K10

CSS Transitions

「颜色分离」: 像素渲染允许文本和图像颜色分离到每个子像素。这样,一个像素可以显示多种颜色,提供更丰富颜色表示能力。...像素渲染在高分辨率显示设备上更为明显,而在低分辨率设备上可能不太明显或无法有效运用。它通常用于确保文本和图像在屏幕上最佳呈现。...,指定了额外CSS声明,类似于JavaScriptonMouseEnter事件。...❝这个组合在某物进入和退出口时非常有用,比如一个弹窗显示和隐藏。 ❞ ease-in几乎只用于元素以屏幕外或不可见结束动画;否则,突然停止可能会令人不适。...时间函数描述了一个值如何在固定时间间隔内从0到1,而不是动画应该多快完成。一些时间函数可能会感觉更快或更慢,但在这些示例,它们都需要完全1秒来完成。

24330

SAO-UI-PLAN--Card-Player

在面积有限作者卡片上做文章实在是有些捉襟见肘,除了可以在配色上动动脑筋以外,没啥可以放内容地方。 然后就想到了翻转卡片。一下就把面积增加了一倍。然后求助与万能codepen,果然不负众望。...这次作者卡片魔改依然是存在插件化可行性。且因为是完全重写了结构。所以不再在原有pug上动刀。而是直接另写一个新pug。 这次我复用了card_author.pug所有变量。...不用再加任何新配置项。 预览效果 魔改步骤 新建,以后教程,,pug文件将不会再沿用之类主题逻辑分类。全部魔改文件和路径都会放在新建 。...以后若是插件化的话,会直接挂载,那时候就是到配置文件关闭了。修改,主题版本不同,格式也不尽相同。好在这次我们只是需要改文件路径。不论是什么版本主题,都只需在文件搜索,将其替换为即可。...已经在stylus文件中注释了样式修复几处关键帧,若出现错位,可以自己调整参数。 重写作者卡片UI,改成游戏角色属性面板 常规显示站点描述,鼠标悬停翻转显示social icon

79120

【IOS开发基础系列】UIView专题

这个只发生在接收者从它父视图上移除或者接收者添加到父视图中而不是添加到window。...• 旋转:即任何应用到视图上仿射变换(transform)。         UIKit直接将动画集成到UIView,实现简单动画创建过程。...2.在容器视图中设置转换。 3.在容器视图中移除视图。 4.在容器视图中添加视图。 5.结束动画块。...4.2.2 (未解决)DrawRect如何清空之前内容 4.2.3 DrawRect之后注意用hitTest:withEvent:方法处理事件接收 //用户触摸时第一时间加载内容 - (UIView*...如果一个视图区域超过父视图bound区域(父视图clipsToBounds属性为NO,这样超过父视图bound区域视图内容也会显示),那么正常情况下对子视图在父视图之外区域触摸操作不会被识别

39630

【CSS】378- 44个 CSS 精选知识点

浏览器支持情况 100% 4.使用表格居中 使用display:table(作为flexbox替代)使元素在其父元素水平垂直居。...让图片在容器显示更舒适 设置图像在其容器内适合度和位置,同时保留其宽高比。以前只能使用背景图像和background-size属性来实现。...使最后一项占满剩余高度 通过为最后一个元素提供当前口中剩余可用空间,即使在调整窗口大小时,也可以利用可用口空间。...此函数可以接收两个参数,第一个作为计数器名称,第二个参数表示占位内容,例如 3.1小数点。 CSS计数器对于制作轮廓列表特别有用,因为计数器新实例是在元素自动创建。...添加一个从透明变为白色(从上到下)线性渐变。 pointer-events:none 指定伪元素不能是鼠标事件目标,后面的文本仍然是可选择/交互

5.3K10

IOS触摸事件分发机制详解

前言 很多时候大家都不关心IOS触摸事件分发机制实现原理,当遇到以下几种情形时候你很可能抓破头皮都找不到解决方案: 某个点击消息由父视图来处理,视图怎么把消息传递给父视图 这个按钮不灵敏,怎么扩大点击响应区域...Hit-Testing就完美的解决了这个问题,通过检测触摸点是否在相关视图边界范围内,如果在,就继续递归检测该视图所有视图,离用户最近那个视图边界如果包含触摸点,那么它就是我们要找Hit-Test...举例说明,假如用户点击下图中 view E,那么IOS是通过如下顺序来找到view E: 点击在view A范围内,所以就检测它视图 view B和 view C。...,如果在view边界范围内,则返回YES,然后,在图中递归调用 hitTest:withEvent: 。...下图描述了两个不同事件传递路径(因为不同app设置),一个App事件传递路径由app特殊构成决定,但事件传递路径会遵守相同规则。以下图片很能说明响应链是如何传递。 ?

3.5K90

翻译_iOS视图编程指南(View Programming Guide for iOS)之视图和窗口体系

无论你是使用系统视图还是自定义视图,都需要理解由UIVIew和UIWindow类所提供基础结构。这些类提供复杂设施来管理视图布局和显示。...视图结构基本原理#### 表面上,你可能想去做就是处理视图对象(UIView子类).一个视图对象规定了视图上矩形区域,并且在矩形区域上处理绘画和触摸事件。...每一个父视图都将视图存储在一个有序数组,这个顺序影响着每个子视图可视度。如果两个兄弟视图相互重叠,最后加入视图将会最先显示。 父子视图关系也影响着一些视图行为。...另一些影响视图变化有:隐藏父视图、改变父视图透明度、将数学变化应用到父视图坐标系统。 在视图层次管理视图决定着你应用是如何响应事件。...当在特定视图中发生触摸事件时,系统将会把带有触摸信息事件对象直接发送到视图处理机制。然而,如果视图没有处理特定触摸事件时,它将会把事件对象传送到父视图。

98740

模拟试题C

三维观察流程坐标变换正确次序应为( ) 其中,1,2,3分别代表:1)口变换; 2)观察变换;3)投影变换 A) 1>2>3 B)1>3>2 C)2>3>1 D)2>1>3 12....如图B.14所示,显示显示彩色是由红、绿、蓝三种原色混合而成,混合方式是下列两种方式哪一种? ( ) A)三种颜色像素点充分靠近 B)三种颜色像素点叠加在同一位置处 ?...( ) A)画线设备 B)画点设备 C)支持动态图形显示 D)与图形复杂度相关 E)锯齿现象 2.下列有关平面几何投影叙述,错误论述为( ) A)在平面几何投影,若投影中心移到距离投影面无穷远处...3.下列有关Bezier曲线性质叙述,正确结论为( ) A)Bezier曲线可用其特征多边形定义; B)Bezier曲线必须通过其特征多边形各个顶点; C)Bezier曲线两端点处切线方向必须与其特征多边形相应两端线段走向一致...5.下列哪些是图形输入设备( ) A)光笔 B)触摸板 C)扫描仪 D)数据手套 6.下列属于Bezier曲线性质有( ) A)非负性 B)仿射不变性 C)对称性 D)凸包性 三、判断题

2K30

【IOS开发基础系列】UIScrollView专题

某些对象是用来管理内容显示如何绘制,这些对象应该是管理如何平铺显示内容视图,以便于没有视图可以超过屏幕尺寸。就是当用户滚动时,这些对象应该恰当增加或者移除视图。          ...假如定时器行动时,没有任何位置改变,滚动视图就发送一个跟踪事件触摸视图。如果在定时器消失前,用户拖动他们手指足够远,滚动视图取消视图任何跟踪事件,滚动它自己。...那么这里就有疑问了,既然该属性设置未来NO了,那么岂不是UIScrollView不能处理任何事件了,那么为何在图上快速滚动时候,UIScrollView还能移动那。...而前面所说时,中断touch-down事件,和取消touch事件是俩码事,所以当快速在图上移动时候,当然可以滚动。...下面就需要在你创建视图控制器,创建一个重用视图数组,用来把这些要显示视图放入内存,这里虽然界面上显示是2排2列四个视图,但是当拖动时候,可能出现前面一排视图显示一部分,末尾一排视图显示一部分情况

35830

理解Unity3D四种坐标体系

口 Viewport 坐标体系 当我们使用多个相机,在同一个场景显示多个时候,我们就需要用上口坐标系了。...口坐标系对于场景显示非常重要,对于新手来说我们经常使用一个相机就够了,但是当需要使用到多个时候,我们就必须关注视口坐标体系了,大家可以在相机 Camera 属性中看到 Viewport Rect...比如我们经常需要处理鼠标的相关事件(鼠标位置、单击、双击事件等),或者手机上触摸反馈,这些原始数据都是屏幕坐标系相关。...如何通过宽高比获取摄像机口尺寸呢?...我举个例子,我们在游戏开发中会遇到这种情况,你相机如果直接放到世界那么必然会需要调整它旋转角度才能达到满意口位置,如何不让相机产生任何旋转就能把世界游戏物体放到合适口位置呢?

4.9K32

iOS学习——UIView研究

在iOS学习——iOS 整体框架及类继承框架图中列出了iOS中所有类继承框架图,其中下面这张图就是iOS开发界面相关类继承框架图。 ?...,也是直接采用block方式实现 视图上手势相关扩展 UIView (UIViewGestureRecognizers)  ,主要提供添加、移除和手势开始前回调3个方法 视图上运动效果相关扩展 UIView...) ,主要提供添加单个/多个、移除单个/多个约束方法 视图上约束相关扩展 UIView (UIConstraintBasedLayoutCoreMethods),主要提供4种约束更新方法 视图上约束共存相关扩展...*/ 209 - (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event; 210 /** 判断当前点击或者触摸事件点是否在当前...:(NSInteger)index2; 249 250 /** 添加视图(新添加视图在subviews数组后面, 显示在最上面) */ 251 - (void)addSubview:(UIView

2.7K80

iOS面试题-UI篇

可以响应用户事件,Xcode6之后可以方便通过视图调试功能查看图层之间关系 UIView是iOS系统界面元素基础,所有的界面元素都继承自它。...View树形结构,也可以向它layer上添加layer,来完成某些特殊显示。...-(void)viewDidLayoutSubviews; 触摸事件传递 触摸事件传递是从父控件传递到控件 如果父控件不能接收触摸事件,那么子控件就不可能接收到触摸事件 不能接受触摸事件四种情况...默认就是NO,因此UIImageView以及它控件默认是不能接收触摸事件 如何找到最合适处理事件控件: 首先,判断自己能否接收触摸事件 可以通过重写hitTest:withEvent:方法验证...其次,判断触摸点是否在自己身上 对应方法pointInside:withEvent: 从后往前(先遍历最后添加控件)遍历控件,重复前面的两个步骤 如果没有符合条件控件,那么就自己处理 事件响应者链

1.9K21

Cocoa编程中视图控制器与视图类详解

iPhone编程规则是:一个窗口,多个视图。UIView是iPhone屏幕上很多控件基础类。...每个iPhone用户界面都是由显示在UIWindow(这其实也是个特殊UIView)内众多UIView及其专门化子类构建。...UIViewController实例负责设置视图外观和它显示视图。 UINavigationController类 1. 导航控制器使用内置动画在视图之间切换; 2....不过,也可以具体情况,我们直接在一个独立视图控制器创建UITabBarController实例对象,如自定义一个用于视图 切换控制器类ViewSwitcherViewController,就可在其中...•管理视图上显示数据。 •设备方向变化,调整视图大小以适应屏幕。 •负责视图和模型之间数据及请示传递。 2.

5K50

iOS-控件响应用户控制事件事件处理

; 事件产生和传递 发生触摸事件后,系统会将该事件加入到一个由UIApplication管理事件队列。...,那么子控件就不可能接收到触摸事件(掌握) 如何找到最合适控件来处理事件?...从后往前遍历控件,重复前面的两个步骤 如果没有符合条件控件,那么就自己最适合处理 原理 // point:是方法调用者坐标系上触摸位置 - (UIView *)hitTest:(CGPoint...,则将其丢弃 响应者链条示意图 响应者链条:是由多个响应者对象连接起来链条 作用:能很清楚看见每个响应者之间联系,并且可以让一个事件多个对象处理。...1.必须得自定义view 由于是在view内部touches方法监听触摸事件,因此默认情况下,无法让其他外界对象监听view触摸事件 不容易区分用户具体手势行为 UIGestureRecognizer

94670
领券