покачивать анимацию в цели C - PullRequest
1 голос
/ 12 октября 2011

У меня есть несколько анимированных / интерактивных UIImageViews на моем UIView, которые будут анимироваться / взаимодействовать на основе пользовательских прикосновений. Я пытаюсь добавить функцию, которая бы «шевелила» эти интерактивные UIImageViews с возможностью анимации при прикосновении к значку, что помогло бы пользователю определить, какие объекты являются интерактивными на экране. Я пытаюсь использовать следующий код для достижения движения "покачивания" из этого блога:

-(void)doWiggle:(UIView *)touchView {
    // grabbing the layer of the tocuhed view.
    CALayer *touchedLayer = [touchView layer];
    // here is an example wiggle
    CABasicAnimation *wiggle = [CABasicAnimation animationWithKeyPath:@"transform"];
    wiggle.duration = 0.1;
    wiggle.repeatCount = 1e100f;
    wiggle.autoreverses = YES;
    wiggle.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(touchedLayer.transform,0.1, 0.0 ,1.0 ,1.0)];
    // doing the wiggle
    [touchedLayer addAnimation:wiggle forKey:@"wiggle"];
    // setting a timer to remove the layer
    [NSTimer scheduledTimerWithTimeInterval: 2.0 target:self selector:@selector(endWiggle:) userInfo:touchedLayer repeats:NO];
}

-(void)endWiggle:(NSTimer*)wiggleTimer {
    // stopping the wiggle now
    [((CALayer*)wiggleTimer.userInfo) removeAllAnimations];
}

Я называю это так в своей программе: [self doWiggle:imageAnimation];, где imageAnimation - это UIImageView. Я вижу, что во время покачивания половина изображения исчезает. Я где-то читал, что мне нужно правильно установить z-индекс, чтобы это работало. Что мне нужно установить для z-index? и у меня есть 3 - 4 UIImageViews на страницу, где мне нужно вызвать doWiggle: рутина, мне нужно исправить z-индексы всех этих UIImageViews?

1 Ответ

0 голосов
/ 12 октября 2011

Прежде чем вызывать doWiggle, вам может потребоваться сделать следующий код:

[[superView touchView] yieldSubviewToFront: touchView];

Если вы можете увидеть весь вид до выполнения анимации, тогдаэто, вероятно, не решит вашу проблему.Вполне возможно, что ваше изображение масштабируется при просмотре изображения, и это вызывает проблемы во время анимации.Возможно, вам придется изменить масштаб изображения с помощью программы редактирования изображений, чтобы он уместился внутри вида, но не масштабируйте его.Вы также можете сделать это программно, если у вас нет статического изображения (например, загрузка из сети и т. Д.).

...