2011-03-13 2 views
0

그래서 UIImageViews를 내보기에 넣을 수 있습니다. 나는 그것들을 임의의 장소에두기를 원하며 나중에 UIImageView의 임의의 위치를 ​​코드에서 얻을 수 있어야한다.무작위로 UIImageViews를 배치 한 다음 찾을 수 있습니다.

나는 UIImageViews를 5 개 가지고 있고 각각 따로 따로 할 것이지만 나중에는 더 많거나 적은 5 개가 필요할 수 있으므로 표준적인 일관된 방법이 최선의 방법 일 것입니다. 당신이 나중에의 보류를 얻을 수 있도록있는 NSArray에

for (int i=0; i<5; ++i) { 

    snack = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"03-loopback.png"]]; 
    //snack.frame = CGRectMake(104, 76, 32, 22); 
    snack.frame = CGRectMake(arc4random()%448, arc4random()%298, 32, 22); 
    [self.view addSubview:snack]; 
    snackLocation = CGPointMake(snack.center.x, snack.center.y); 
} 
+0

위치가 변경 되었습니까? 아니면 정적 인 채로 있습니까? 나중에 코드에서 원하는 원래 위치입니까? – Zigglzworth

+0

아직 확실하지 않습니다. 지금 당장은 정적이라고 말하고 원래 위치를 원합니다. – Andrew

답변

3

난 당신이 태그를 사용할 수 있다고 생각

snack.tag=i;//Set the tag for each imageview 
다음

이 서브 뷰에 액세스 할 수있는 기본보기의 각 서브 뷰에 루프

for (UIView *yourSubView in [self.view subviews]) { 

     if (yourSubView.tag == YOUR_TAG) { 
      //Do what you want with the view 
        break;//jump out the loop 
     } 
    } 

이 코드를 사용하면 코드를 적게 쓰고 서브 뷰의 프레임에 직접 액세스 할 수 있습니다.

[self.view viewWithTag:YOUR_TAG].frame=YOUR_FRAME; 

IB의 검사기를 살펴보면 각 UI 요소에는 요소를 식별하도록 설정할 수있는 속성 태그가 있습니다.

+0

고마워, 그게 나를 위해 해냈어. – Andrew

+0

이 코드를 사용하고 for 루프에서 각 CGPoint를 배열에 추가합니다. 그런 다음 배열에서 그 값을 나중에 다시 봅니다. '[NSValue valueWithCGPoint : CGPointMake (x, y)]가 최선의 방법인가요? – Andrew

1

스토어 각각의 UIImageView 인스턴스 :

내가 지금 함께 일하고 있어요 코드입니다. 나중에
for (int i=0; i<5; ++i) { 

    snack = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"03-loopback.png"]]; 
    snack.frame = CGRectMake(arc4random()%448, arc4random()%298, 32, 22); 
    [self.snackViews addObject:snack]; //self.snackViews is an NSMutableArray 
    [self.view addSubview:snack]; 
} 

, 당신은 self.snackViews 배열의 모든 뷰를 얻을 수 있습니다 : 그럼 그냥 위치를 검색하기 위해 다시 프레임 속성을 사용합니다.

가 for 루프에 추가 :

관련 문제