2012-04-19 51 views

回答

0

可以導航通過的UIImageView的上海華的子視圖在一個for循環。並將每個視圖的位置與特定的UIImageView的位置進行比較。

但是這聽起來不好。也許如果你能更多地瞭解這個問題,我們可以幫助更好。

1

首先,你得到所有你的觀點數組的主視圖內:

NSArray *subviews = [view subviews]; 

然後,對每個視圖,您可以檢查每個視圖的框架:

for (int i = 0 ; i < [subviews count]; i++){ 
    CGRect frame = [subviews objectAtIndex:i].frame; 
} 
+0

感謝您的幫助 – user1344213 2012-04-21 12:32:13

+0

歡迎您,將其標記爲接受請 – 2012-04-21 14:33:03

0

您可以使用這種方法以及:

既然你說你有ImageView的位置,然後保存在一些CGRect variable.Try

UIImageView *yourImgView = (UIImageView *)[view subviews]; 

這將返回您的imageView。然後,根據您的需要,您可以檢查其框架以前保存的位置或其可見性。

3

這裏是一個輔助的方法來檢查兩個rects重疊:

-(BOOL) rect:(CGRect)rect overlap:(CGRect)anotherRect 
{ 
    BOOL xOverlap = ((rect.origin.x >= anotherRect.origin.x) && (rect.origin.x <= anotherRect.origin.x + anotherRect.size.width)) || 
        ((anotherRect.origin.x >= rect.origin.x) && (anotherRect.origin.x <= rect.origin.x + rect.size.width)); 

    BOOL yOverlap = ((rect.origin.y >= anotherRect.origin.y) && (rect.origin.y <= anotherRect.origin.y + anotherRect.size.height)) || 
        ((anotherRect.origin.y >= rect.origin.y) && (anotherRect.origin.y <= rect.origin.y + rect.size.height)); 

    return xOverlap && yOverlap; 
} 

用法:
你可以儘管重複視圖的所有子視圖和檢查,如果您的視圖的框架重疊的另一視圖的框架。假設你有那麼一個屬性MyView的:

for(UIView *v in self.view.subviews) 
    { 
     if(v == self.myView) //skip the same view 
      continue; 

     if([self rect:self.myView.frame overlap:v.frame]) 
     { 
      //Do something... 
     } 
    } 
+0

非常感謝它是非常有益的 – user1344213 2012-04-21 12:29:51

相關問題