Скрытие NSArray - как мне это сделать? - PullRequest
1 голос
/ 19 августа 2010

В моем коде есть настройка 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: ДА, он, кажется, не скрывается и выкрикивает, что анимация не объявлена. Кто-нибудь может предложить ответ на этот вопрос? Конечно, я смотрю мне в лицо, но после нескольких часов попыток? Сейчас я признал поражение.

Ответы [ 3 ]

1 голос
/ 19 августа 2010

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

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

[aView setAlpha:1.0] // fully opaque
[aView setAlpha:0.0] // fully transparent
1 голос
/ 19 августа 2010

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

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

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

РЕДАКТИРОВАТЬ (после вашего первого ответа):

В файле 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];
}

РЕДАКТИРОВАТЬ 2 :
Изменена строка объявления в файле .h (UIImageView *_animationView;)

0 голосов
/ 19 августа 2010

Вы пытались установить свойство alpha в анимации UIImageView на ноль?Если вы измените это свойство внутри анимационного блока , оно будет анимировано исчезать.

...