我有一个UIImageView
的平面图,客户想要做的是当他点击平面图中的特定区域时,它会显示该区域的内部图像...我不会'单击时显示该区域时出现问题。我的问题是要点击的区域。看看我的初步实施:(我不知道它是否是正确的方式)
主沐浴区有一个多余的地方我放了一个按钮,所以当用户点击该区域时,我将执行显示内部图像的动作...同样也在"走路-in closet"区域,我有2个按钮。
那么,有没有办法优化这种实现?
答案 0 :(得分:0)
一个选项是使用UITapGestureRecognizer
来进行imageView,然后触发手势
- (IBAction)tap:(UITapGestureRecognizer*)sender {
CGPoint touchPoint = [sender locationInView:yourimageview];
//Then decide the point in which area to do different action
}
答案 1 :(得分:0)
你说
单击时显示该区域没有问题。
了解如何显示区域非常重要,因为这可能是解决问题的关键。
如果你有一些路径(CGPath,UIBezierPath)来确定要突出显示的区域,你可以使用相同的路径进行命中测试。在按钮子类,UIView子类或手势识别器中。
即。此代码使用层的掩蔽路径(如果存在)。当然,这可能是几条道路。
@implementation MyView
//
// ...
//
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
CGPoint p = [self convertPoint:point toView:[self superview]];
if(self.layer.mask){
if (CGPathContainsPoint([(CAShapeLayer *)self.layer.mask path], NULL, p, YES) )
return YES;
}else {
if(CGRectContainsPoint(self.layer.frame, p))
return YES;
}
return NO;
}
@end
点击手势识别器仅在视图位于此路径内时才会检测到该视图。
相同的pointInside:withEvent:
适用于基于路径的UIButton子类。