2017-07-15 27 views
0

我有一张地图,我想把它的不同区域变成可点击的元素。我知道我可以使用photoshop拼接地图,并将每个地区我想要成为一个按钮单独,但这对我来说感觉有点不好意思,我不知道每个设备的纵横比是否会保持不变当我把拼图拼在一起。将单个图像分成几个复杂形状的可点击区域的最佳方法是什么?如何将不同区域的图像制作成按钮(swift/xcode)?

回答

4

最通用的解决方案可能是通过附加一个水龙头手势识别器,然后解释水龙头手势,使整个视图(图像视图)可点击。

我建议创建一个UIView的自定义子类,它内部有一个图像视图,附加一个水龙头手势识别器,并响应来自水龙头手势识别器的消息来确定哪个区域被挖掘。

+0

听起来很不错!使用这种方法,你认为找出完美的区域是可行的,还是很难将其配置到如此高的精确度? – Dal

+1

@Dal你必须存储一个归一化点列表来定义每个区域的路径。当用户点击您的视图时,您只需测试自己的路径即可知道自己在哪个路径下创建(使用https://developer.apple.com/documentation/uikit/uibezierpath/1624345-contains)。每条路径上的点数越多,精度就越高 – Imotep

+1

应该很容易以比用户手指的准确度更高的准确度来检测水龙头。 (手指敲击的本质是不精确的。)有各种方法来检测敲击。你可以使用一个矩形网格,一组任意的retangles。您可以使用一组点和半径,或者您可以使用一组“UIBezierPaths”和“UIBezierPath”包含(_ :)'方法来检测不规则形状的抽头。 –