polygon UIView用于触发事件

时间:2011-01-20 17:28:56

标签: iphone cocoa-touch uitableview uiscrollview

我需要这样的东西:
图片地图(我认为必须使用某种类型的UIView来完成)这是一个图像(特殊地图),其中一些区域(多边形)应该调用一个事件触摸时...如何对触发事件的图像进行poligon-“叠加”? 上面提到的图片地图UITableView中的UIScrollView - 但我认为这不应该那么难......?之后应该看起来像这样。

-------------------------- UIScrollView top
 +-----------------------+
 +    polygon UIView     +
 +-----------------------+
 +-----------------------+
 +      UITableView      +
 +-----------------------+
-------------------------- UIScrollView bottom

提前感谢您的回答!

1 个答案:

答案 0 :(得分:1)

我创建了一个UIView的子类(例如DOMImageMapView),其中包含与之关联的CGPathRefUIBezierPath个实例的列表。

DOMImageMapView的{​​{1}}实现中,您将绘制图像,然后遍历每个路径实例并使用drawRect:CGContextFillPath()填充它。

对于点击测试,您需要实施-[UIBezierPath fill](或类似),并通过touchesEnded:withEvent:CGPathContainsPoint()测试每条路径。如果其中一条路径返回-[UIBezierPath containsPoint:],请调用YES之类的委托方法。

您的imageMapView:didSelectArea:(或UITableViewController中包含UIViewController)会创建UITableView并将自己设为DOMImageMapView。当点击一个区域时,控制器将接收回调并可以适当地处理该事件。