Я пытаюсь повернуть UIImageView вокруг точки привязки для имитации «радар развертки» стиль анимации. Мое понимание опорных точек заставляет меня думать, что (1, 1) должен быть нижним правом углом radar image. Тем не менее, установка точки привязки ImageView к это не дает мне поведение я ожидал. Это можно посмотреть here.Вращающийся UIImageView вокруг anchorpoint вопросы
Как видно, опорная точка - это путь вверх по правой стороне изображения, хотя он правильно расположен в центре. Я хочу, чтобы изображение вращалось вокруг центральной точки, как радар.
Вот соответствующий код:
self.radarView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, barDimension, barDimension)];
self.radarView.contentMode = UIViewContentModeScaleAspectFill;
self.radarView.image = [UIImage imageNamed:@"radarSweep.png"];
self.radarView.layer.anchorPoint = CGPointMake(1, 1);
self.radarView.layer.position = CGPointMake(screenWidth/2.0, screenHeight/2.0);
[self.mapView addSubview:self.radarView];
CABasicAnimation *opacityInAnim = [CABasicAnimation animationWithKeyPath:@"opacity"];
[opacityInAnim setFromValue:[NSNumber numberWithFloat:0.0]];
[opacityInAnim setToValue:[NSNumber numberWithFloat:1.0]];
opacityInAnim.duration = 0.25;
opacityInAnim.fillMode = kCAFillModeForwards;
opacityInAnim.removedOnCompletion = NO;
opacityInAnim.beginTime = 0.0;
opacityInAnim.delegate = self;
[opacityInAnim setValue:@"radarSweep" forKey:@"animName"];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:2 * M_PI];
animation.duration = 1.0f;
animation.fillMode = kCAFillModeForwards;
animation.repeatCount = 2;
animation.removedOnCompletion = NO;
[animation setBeginTime:0.0];
animation.delegate = self;
[animation setValue:@"radarSweep" forKey:@"animName"];
animation.removedOnCompletion = YES;
CABasicAnimation *opacityOutAnimBar = [CABasicAnimation animationWithKeyPath:@"opacity"];
[opacityOutAnimBar setFromValue:[NSNumber numberWithFloat:1.0f]];
[opacityOutAnimBar setToValue:[NSNumber numberWithFloat:0.0f]];
opacityOutAnimBar.delegate = self;
opacityOutAnimBar.fillMode = kCAFillModeForwards;
opacityOutAnimBar.removedOnCompletion = NO;
[opacityOutAnimBar setDuration:0.25];
[opacityOutAnimBar setValue:@"radarSweep" forKey:@"animName"];
[opacityOutAnimBar setBeginTime:1.35];
CAAnimationGroup *group = [CAAnimationGroup animation];
[group setDuration:2.0];
group.delegate = self;
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
[group setAnimations:@[opacityInAnim, animation, opacityOutAnimBar]];
[group setValue:@"radarSweep" forKey:@"animName"];
[self.radarView.layer addAnimation:group forKey:@"group"];
Любые советы будут оценены. Заранее спасибо.
Спасибо! Изображение было квадратным, но я сделал изменения в последнее время, и я забыл приспособить это. Выглядит отлично! –