iOS有時候需要判斷是否touch到某個圖的區域中。也就是touch到的這個點是否在某個圖的區域范圍內。
解決問題的辦法很多, 這里簡單介紹一種。
我們可以通過CGPath創建一個區域,區域是由路徑做兩點間線段并閉合成的區域,然后就可以用CGPath相關函數CGPathContainsPoint判斷點是否在區域里了。
比如這里創建了一個簡單的矩形。它的frame為(4, 4, 10, 10)。 四個頂點的坐標分別為(4, 4), (4, 14), (14, 14), (14, 4)
顯然易得, (1, 1)不在這個區域內 (5, 5)在這個區域內。
我們可以驗證一下, 代碼如下:
- (void)viewDidLoad
{
[super viewDidLoad];
CGMutablePathRef pathRef=CGPathCreateMutable();
CGPathMoveToPoint(pathRef, NULL, 4, 4);
CGPathAddLineToPoint(pathRef, NULL, 4, 14);
CGPathAddLineToPoint(pathRef, NULL, 14, 14);
CGPathAddLineToPoint(pathRef, NULL, 14, 4);
CGPathAddLineToPoint(pathRef, NULL, 4, 4);
CGPathCloseSubpath(pathRef);
CGPoint point=CGPointMake(5, 5);
CGPoint outPoint=CGPointMake(1, 1);
if (CGPathContainsPoint(pathRef, NULL, point, NO))
{
NSLog(@"point in path!");
}
if (!CGPathContainsPoint(pathRef, NULL, outPoint, NO))
{
NSLog(@"outPoint out path!");
}
}
如果判斷是否是點擊某個視圖可以采用
if ([touches anyobject].view == yourView){}