Скрытие NSArray - как мне это сделать?

В моем коде есть настройка NSArray для отображения попеременно мигающих двух PNG. Я пытаюсь установить фрагмент кода, который устанавливает его в скрытое состояние, перемещает его за пределы экрана, что угодно, чтобы скрыть его от пользователя.

Код для моего массива:

NSArray *imageArray = [[NSArray alloc] initWithObjects:
 [UIImage imageNamed:@"CONNECTED dark yellow FF CC 00.png"],
 [UIImage imageNamed:@"CONNECTEDR dark yellow FF CC 00.png"], nil];

UIImageView *animation = [[UIImageView alloc] initWithFrame: CGRectMake(20, 10, 300, 80)];
animation.animationImages = imageArray;
animation.animationDuration = .8;
animation.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:animation];
[animation startAnimating];
[animation release];
[view release];

Однако, если я пытаюсь использовать setHidden или .hidden: ДА, похоже, он не скрывается и выкрикивает, что анимация не объявлена. Кто-нибудь может предложить ответ на этот вопрос? Конечно, я смотрю мне в лицо, но после нескольких часов попыток? Сейчас я признал поражение.

1
задан RedBlueThing 19 August 2010 в 15:30
поделиться

3 ответа

Вы должны сохранить ссылку на представление animation (добавьте член/свойство в контроллер представления и добавьте код типа _animationView = animation прямо перед его освобождением; а затем используйте _animationView вместо animation при попытке скрыть его).

Или вы можете установить тег для этого представления и найти его по тегу позже...

Надеюсь, я правильно понял вашу проблему - сообщите мне об обратном.

EDIT (после вашего первого ответа):

В файле MyViewController.h:

class MyViewController : UIViewController {
    UIImageView *_animationView;
}

В файле MyViewController.m:

NSArray *imageArray = [[NSArray alloc] initWithObjects:
 [UIImage imageNamed:@"CONNECTED dark yellow FF CC 00.png"],
 [UIImage imageNamed:@"CONNECTEDR dark yellow FF CC 00.png"], nil];

UIImageView *animation = [[UIImageView alloc] initWithFrame: CGRectMake(20, 10, 300, 80)];
animation.animationImages = imageArray;
animation.animationDuration = .8;
animation.contentMode = UIViewContentModeBottomLeft;
[self.view addSubview:animation];
[animation startAnimating];

// Add the next line
_animationView = animation;

[animation release];
[view release];




// Use this method to hide the animation view...
- (void)hideAnimationView {
    _animationView.hidden = YES;
    [_animationView stopAnimating];
}

EDIT 2:
Изменена строка объявления в .h файле (UIImageView *_animationView;)

1
ответ дан 2 September 2019 в 21:59
поделиться

hidden не является анимируемым, так как между YES и NO нет анимации. Не существует способа выразить "Немного ДА и немного НЕТ" в булевой логике.

Попробуйте вместо этого использовать альфу

[aView setAlpha:1.0] // fully opaque
[aView setAlpha:0.0] // fully transparent
1
ответ дан 2 September 2019 в 21:59
поделиться

Пробовали ли вы установить свойство alpha на вашем animation UIImageView в ноль? Если вы измените это свойство внутри блока анимации, он сделает анимированное затухание.

0
ответ дан 2 September 2019 в 21:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: