编辑以改进数据模型
为此,您将在背景中有一个带有地图图像的 UIView。您可以使用 UIImageView 或在 drawRect 中自己渲染图像来执行此操作。
然后,您将定义几个 CGPath 引用。通过执行这样的操作为每个建筑物创建一个...如何从点数组创建 CGPathRef 点将是每个建筑物的角。
现在以某种方式将这些路径存储在一个数组中。每个“可点击”建筑都需要一条路径。
我会将路径存储在 Building 对象或其他东西中......
@interface Building : NSObject
@property (nonatomic) CGPath path;
@end
现在在您覆盖的 UIView 子类中- (void)touchesBegan...
。然后,您可以获取接触点并遍历您的路径以找到被触摸的那个...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint touchPoint = [touch locationInView:self];
for (Building *building in self.buildings) {
if (CGPathContainsPoint(building.path, CGAffineTransformIdentity, touchPoint, YES)) {
//the touch was inside this building!
//now do something with this knowledge.
}
}
}