2013-10-28 90 views
1

我在屏幕上有幾個UIViews,它們都沒有重疊,我想選擇一個基於X/Y座標的UIView(屏幕作爲整個視圖尺寸,因此iPhone 5的320x568)對所選UIView進行轉換例如,在下圖中,我想根據輸入(40,40)選擇藍色矩形,然後執行轉換,例如將其顏色更改爲紅。如何根據X/Y座標在屏幕上選擇UIView

enter image description here

謝謝!

+0

選擇通過觸摸屏? –

回答

4

UIView實現了一個名爲hitTest:withEvent的方法:(see docs here),它將回答包含給定點的視圖層次結構中最深的視圖。

使用方法如下:

// in the view controller subclass 
CGPoint point = CGPointMake(40.0, 40.0); 
UIView *subviewContainingPoint = [self.view hitTest:point withEvent:nil]; 
4

UIViews有一個tag屬性,這可能是一種更簡單的方法來完成你正在尋找的東西。

您可以在界面構建器中設置標籤,也可以以編程方式進行設置。

UIView* newView = [[UIView alloc] initWithFrame:CGRectMake(x,y,z,a)]; 
[newView setBackgroundColor:[UIColor blueColor]]; 
newView.tag = 1; 
[self addSubview:newView]; 

後,你可以通過調用視圖進一步向上層次的viewWithTag方法訪問該視圖,然後做一些事來它

[[self viewWithTag:1] setBackgroundColor:[UIColor redColor]]; 

雖然這不是不可能通過查詢找到你的意見他們框架,並在結果座標上做一些數學運算,這些標籤可以更好地爲您服務。