В моем коде есть настройка 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: ДА, похоже, он не скрывается и выкрикивает, что анимация не объявлена. Кто-нибудь может предложить ответ на этот вопрос? Конечно, я смотрю мне в лицо, но после нескольких часов попыток? Сейчас я признал поражение.
Вы должны сохранить ссылку на представление 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;
)
hidden
не является анимируемым, так как между YES
и NO
нет анимации. Не существует способа выразить "Немного ДА и немного НЕТ" в булевой логике.
Попробуйте вместо этого использовать альфу
[aView setAlpha:1.0] // fully opaque
[aView setAlpha:0.0] // fully transparent
Пробовали ли вы установить свойство alpha на вашем animation UIImageView в ноль? Если вы измените это свойство внутри блока анимации, он сделает анимированное затухание.