UIImageView - 如何创建可在图像视图中呈任何形状的可点击区域?

时间:2017-10-24 09:27:17

标签: ios objective-c swift uiimageview

我必须将地图的图像(地点,建筑等的概述)合并到图像视图中。地图中应该有可以选择的地方。通常,图像具有20-25个必须可选择的位置。这些地方的形状彼此不同。

在html中我们有map标签来完成这类任务,我需要在iOS原生平台上为此解决这个问题。任何建议或帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

关键想法:您可以将UITapGestureRecognizer添加到UIImageView。设置selector,每次点击都会触发。在selector中,您可以检查点按完成的坐标。如果坐标满足您启动事件的条件,则可以执行任务。

添加手势识别器:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleImgViewTap:)];
[singleTap setNumberOfTapsRequired:1];

[yourImgView addGestureRecognizer:singleTap];

设置选择器:

-(void)handleImgViewTap:(UITapGestureRecognizer *)gestureRecognizer

{
    // this method gonna fire everytime you tap on the 
    // image view. you have to check does the point where
    // the tap was done, satisfy your path/area condition.

    CGPoint point = [gestureRecognizer locationInView:yourImgView];

    // here point.x and point.y is the location of the tap
    // inside your image view. 
    if(/*your condition goes here*/)
    {
         // execute your staff here.
    }
}

希望它有所帮助,Happy ios编码。

答案 1 :(得分:0)

给定视图(ora imageview),您应该定义形状的UIBezierPath。 在此视图中添加一个taprecognizer,并设置与识别器委托相同的视图。 在委托方法中,使用UIBezierPath.contains(_ :)来了解tap是否在路径内,并决定是否触发tap事件。

如果您需要代码示例,请告诉我。