iphone - 如何从点数组中绘制填充形状并在该形状内获得点击?

标签 iphone objective-c ios cocoa-touch

在我的应用程序中,我有一个由用户添加的点数组,我希望能够从这些点创建一个填充形状。

我还希望能够获得形状内的任何点击(不是形状的矩形框架,而是实际形状本身)。另外,如果水龙头不在形状内(但可能仍在形状的框架内),我希望水龙头“向下传递”到下面的形状(如果有的话)。

从某种意义上说,我试图从一组点创建一个不规则形状的 UIButton。

最佳答案

  1. 创建 UIView 的子类。
  2. 在其中,从点数组(moveToPoint:addLineToPoint:)创建一个 UIBezierPath 属性。
  3. drawRect: 中,使用贝塞尔曲线路径绘制形状(调用 filllines 或两者)。
  4. 对于 HitTest ,请重写 pointInside:withEvent: 并根据 -[UIBezierPath containsPoint:] 的返回值返回正确的值。

如果 View 坐标系和路径坐标系彼此不同,请确保在它们之间正确转换。

关于iphone - 如何从点数组中绘制填充形状并在该形状内获得点击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7042217/

相关文章:

ios - Swift - UIPickerView - 使用 "reloadAllComponents"后组件仍然隐藏

objective-c - 以编程方式打开 Mac App Store

iOS - 如何找到上传文件的估计剩余时间

ios - Swift 如何在不中断 reloadData 的情况下显示视频

ios - 使用 xcodebuild 通过命令行设置 "OTHER_LDFLAGS"

ios - 如何在另一个 Storyboard中获取 ECSlidingViewController 的实例?

iPhone 显着位置变化会导调用池耗尽吗?

ios - 使用 Health Kit 的通用应用程序

iOS - 从地址获取纬度和经度(地理编码和 Google API)

ios - 如何从服务器读取Plist文件并直接使用它而不创建本地文件?