iOS開發-判斷一個點是否在某個區域 – iPhone手機開發技術文章 iPhone軟體開發教學課程

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

發佈留言