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!");
}
}