我在屏幕上有几个 UIView,它们都没有重叠,我想根据屏幕上的 X/Y 坐标选择一个 UIView(屏幕作为整个视图尺寸,因此 iPhone 5 为 320x568)以对选定的 UIView 进行转换例如,在下图中,我想根据输入选择蓝色(40,40)
矩形,然后进行转换,例如将其颜色更改为红色。
谢谢!
UIView 实现了一个名为 hitTest:withEvent: 的方法(请参阅此处的文档),它将回答包含给定点的视图层次结构中最深的视图。
像这样使用它:
// in the view controller subclass
CGPoint point = CGPointMake(40.0, 40.0);
UIView *subviewContainingPoint = [self.view hitTest:point withEvent:nil];
UIViews 有一个tag
属性,它可能是一种更简单的方法来完成你正在寻找的东西。
您可以在界面生成器中设置标签,也可以以编程方式设置它。
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]];
虽然通过查询它们的框架并对结果坐标进行一些数学运算来定位您的视图并非不可能,但标签很有可能为您提供更好的服务。