Случайно разместите UIImageViews и затем сможете найти их - PullRequest
0 голосов
/ 13 марта 2011

Итак, я хочу поместить некоторые UIImageViews в мое представление. Я хочу, чтобы они были помещены в случайные места, и я должен иметь возможность получить местоположение каждого из случайных UIImageView позже в коде.

Я бы просто имел 5 UIImageViews и делал бы каждый по отдельности, но мне может понадобиться больше или меньше 5 на более позднем этапе, так что стандартный, унифицированный способ был бы лучшим подходом.

Это код, с которым я сейчас работаю:

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

Ответы [ 2 ]

3 голосов
/ 13 марта 2011

Я думаю, вы можете использовать теги:

добавить в цикл for:

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, каждый элемент пользовательского интерфейса имеет тег свойства, который вы можете установить для идентификации своих элементов.

1 голос
/ 13 марта 2011

Сохраняйте каждый экземпляр UIImageView в NSArray, чтобы вы могли получить их позже. Затем просто используйте свойство frame снова, чтобы получить позицию:

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.

...