iOS開發-判斷一個點是否在某個區域

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章