Ios 如何基于X/Y坐标在屏幕上选择UIView

Ios 如何基于X/Y坐标在屏幕上选择UIView,ios,iphone,uiview,Ios,Iphone,Uiview,我在屏幕上有几个UIView,没有一个重叠,我想根据屏幕上的X/Y坐标选择一个UIView(屏幕作为整个视图维度,所以对于iPhone 5为320x568),以对所选UIView进行转换,例如,在下图中,我想在输入(40,40)的基础上选择蓝色矩形,然后执行变换,例如将其颜色更改为红色 谢谢 UIViews有一个标记属性,这可能是实现所需功能的一种更简单的方法 可以在interface builder中设置标记,也可以通过编程进行设置 UIView* newView = [[UIView al

我在屏幕上有几个UIView,没有一个重叠,我想根据屏幕上的X/Y坐标选择一个UIView(屏幕作为整个视图维度,所以对于iPhone 5为320x568),以对所选UIView进行转换,例如,在下图中,我想在输入
(40,40)
的基础上选择蓝色矩形,然后执行变换,例如将其颜色更改为红色


谢谢

UIViews有一个
标记
属性,这可能是实现所需功能的一种更简单的方法

可以在interface builder中设置标记,也可以通过编程进行设置

UIView* newView = [[UIView alloc] initWithFrame:CGRectMake(x,y,z,a)];
[newView setBackgroundColor:[UIColor blueColor]];
newView.tag = 1;
[self addSubview:newView];
稍后,您可以通过在层次结构更高的视图上调用
viewWithTag
方法来访问该视图,然后对其执行一些操作

[[self viewWithTag:1] setBackgroundColor:[UIColor redColor]];

虽然通过查询视图的帧并对生成的坐标进行数学运算来定位视图并非不可能,但标记很有可能会更好地为您服务。

UIViews有一个
标记
属性,这可能是一种更容易完成您要查找的内容的方法

可以在interface builder中设置标记,也可以通过编程进行设置

UIView* newView = [[UIView alloc] initWithFrame:CGRectMake(x,y,z,a)];
[newView setBackgroundColor:[UIColor blueColor]];
newView.tag = 1;
[self addSubview:newView];
稍后,您可以通过在层次结构更高的视图上调用
viewWithTag
方法来访问该视图,然后对其执行一些操作

[[self viewWithTag:1] setBackgroundColor:[UIColor redColor]];

虽然通过查询视图的帧并对生成的坐标进行数学运算来定位视图并非不可能,但标签很可能会更好地为您服务。

UIView实现了一个名为hitTest:withEvent:()的方法,该方法将回答视图层次结构中包含给定点的最深视图

像这样使用它:

// in the view controller subclass
CGPoint point = CGPointMake(40.0, 40.0);
UIView *subviewContainingPoint = [self.view hitTest:point withEvent:nil];

UIView实现了一个名为hitTest:withEvent:()的方法,该方法将回答视图层次结构中包含给定点的最深视图

像这样使用它:

// in the view controller subclass
CGPoint point = CGPointMake(40.0, 40.0);
UIView *subviewContainingPoint = [self.view hitTest:point withEvent:nil];