Как скрыть нижний вид UIImageView с картинкой?

Рейтинг: 0Ответов: 1Опубликовано: 11.09.2014

Есть вид UIImageView с картинкой внутри (картинка монеты), созданный в storyboard. Нажимаю кнопку поверх этого вида, запускается IBAction, который вращает эту монетку, создается вид поверх этого с помощью addSubview (серия картинок, анимация), останавливается одна из сторон. Тут все хорошо, но если нажать снова на кнопку, запускающую вращение, то вращается монетка, а по ней виден вид с той монеткой, которая до этого выпала. Как его убрать?

Вот два основных метода:

Первый метод

 -(IBAction)pushButton:(id)sender {

    self.tailimage.hidden = YES;  // вот тут убираю картинку с монеткой, изначально созданную в      storyboard, на первом нажатии все хорошо работает, на втором остается

    NSArray *images = [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"heads.png"],
                            [UIImage imageNamed:@"heads2.png"],
                            [UIImage imageNamed:@"heads3.png"],
                            [UIImage imageNamed:@"heads4.png"],
                            [UIImage imageNamed:@"heads5.png"],
                            [UIImage imageNamed:@"heads6.png"],
                            [UIImage imageNamed:@"heads7.png"],
                            [UIImage imageNamed:@"heads8.png"],
                            [UIImage imageNamed:@"heads9.png"],
                            [UIImage imageNamed:@"heads10.png"],
                            [UIImage imageNamed:@"heads11.png"],
                            [UIImage imageNamed:@"heads12.png"],
                            [UIImage imageNamed:@"heads13.png"],
                            [UIImage imageNamed:@"heads14.png"],
                            [UIImage imageNamed:@"heads15.png"],
                            [UIImage imageNamed:@"heads16.png"],
                            [UIImage imageNamed:@"heads17.png"],
                            [UIImage imageNamed:@"heads18.png"],
                            [UIImage imageNamed:@"heads19.png"],
                            [UIImage imageNamed:@"heads20.png"],
                            [UIImage imageNamed:@"tails.png"], nil];

     UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(51, 234, 210, 210)];

     imageView.animationImages = images;
     imageView.animationDuration = 0.50;
     imageView.animationRepeatCount = 40;

     [self.view addSubview:imageView];

     [imageView startAnimating];

     [self performSelector:@selector(randomize:) withObject:nil afterDelay:2.0];

}

Второй метод

-(IBAction)randomize:(id)sender {

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(51, 234, 210, 210)];

    int randomimages = rand() % 2;
    switch (randomimages) {
            case 0:
            imageView.image = [UIImage imageNamed:@"heads.png"];
            break;
        case 1:
            imageView.image = [UIImage imageNamed:@"heads11.png"];
            break;
    }
        [self.view addSubview:imageView];

}

Ответы

▲ 1Принят

Откройте секрет, а зачем вам вообще три (с self.tailimage) картинки понадобилось, если в каждый конкретный момент только одна из них показывается на экране, и они, судя по всему, одного размера? Понадобилась анимация - вставили массив в self.tailimage.animationImages и запустили, кто-то нажал на кнопку (-(IBAction)randomize:(id)sender, если это не кнопка, то IBAсtion не нужен, да и без сендера оно будет работать в любом случае) - поставили нужную картинку в self.tailimage.image, остановили анимацию, сделали self.tailimage.animationImages = nil.

А вообще, чтобы убрать, надо дернуть у UIImageView метод removeFromSuperview, только вот вы себе ни указателя на ваши картинки не оставили, ни тега, чтобы понять, что это точно ваша картинка, и как их найти, не понятно, если, конечно, не брать идиотское решение, с тем чтобы взять что-то наподобие self.view.subviews.lastObject