Ios 从左到中移动UIImageView

Ios 从左到中移动UIImageView,ios,objective-c,Ios,Objective C,我想将图像视图从左移到视图的中心 以下是我的代码: CGPoint origin = self.headerImage.center; CGPoint target = CGPointMake(0, self.headerImage.center.x); CABasicAnimation *bounce = [CABasicAnimation animationWithKeyPath:@"position.x"]; bounce.fromValue = [NSNumber numberWith

我想将图像视图从左移到视图的中心

以下是我的代码:

CGPoint origin = self.headerImage.center;
CGPoint target = CGPointMake(0, self.headerImage.center.x);

CABasicAnimation *bounce = [CABasicAnimation animationWithKeyPath:@"position.x"];
bounce.fromValue = [NSNumber numberWithInt:origin.x];
bounce.toValue = [NSNumber numberWithInt:target.x];
[self.headerImage.layer addAnimation:bounce forKey:@"position"];
加载视图控制器时,它必须从左侧开始移动,并在中心停止。但它不能正常工作。我该如何分类呢?

使用

[UIView animateWithDuration:1.0 animations:^{
    headerImage.frame = myNewFrameRect;
}];
使用

  • target
    需要指明视图的中心:
    CGPointMake(self.view.center.x,self.view.center.y)
  • 更改
    fillMode
    removedOnCompletion
    自动反转
    重复计数
    以避免帧更改(动画的最终)
  • 最终代码:

    CGPoint origin = self.headerImage.center;
    CGPoint target = CGPointMake(self.view.center.x, self.view.center.y);
    CABasicAnimation *bounce = [CABasicAnimation animationWithKeyPath:@"position.x"];
    bounce.duration = 1;
    bounce.fromValue = [NSNumber numberWithInt:origin.x];
    bounce.toValue = [NSNumber numberWithInt:target.x];
    bounce.fillMode = kCAFillModeForwards;
    bounce.removedOnCompletion = NO;
    bounce.autoreverses = NO;
    bounce.repeatCount = 0;
    [self.headerImage.layer addAnimation:bounce forKey:@"position"];
    CGAffineTransform transform = CGAffineTransformMakeScale(1.3, 1.3);
    self.headerImage.transform = transform;
    
  • target
    需要指明视图的中心:
    CGPointMake(self.view.center.x,self.view.center.y)
  • 更改
    fillMode
    removedOnCompletion
    自动反转
    重复计数
    以避免帧更改(动画的最终)
  • 最终代码:

    CGPoint origin = self.headerImage.center;
    CGPoint target = CGPointMake(self.view.center.x, self.view.center.y);
    CABasicAnimation *bounce = [CABasicAnimation animationWithKeyPath:@"position.x"];
    bounce.duration = 1;
    bounce.fromValue = [NSNumber numberWithInt:origin.x];
    bounce.toValue = [NSNumber numberWithInt:target.x];
    bounce.fillMode = kCAFillModeForwards;
    bounce.removedOnCompletion = NO;
    bounce.autoreverses = NO;
    bounce.repeatCount = 0;
    [self.headerImage.layer addAnimation:bounce forKey:@"position"];
    CGAffineTransform transform = CGAffineTransformMakeScale(1.3, 1.3);
    self.headerImage.transform = transform;
    
    问题在于:

    CGPoint origin = self.headerImage.center;
    CGPoint target = CGPointMake(0, self.headerImage.center.x);
    
    你没有瞄准正确的目标,你瞄准的是
    头部图像的当前中心
    ;所以从技术上讲,
    原点
    目标
    在这里是相同的位置

    将目标移动到superview的中心,您会很好:)

    您也可以使用
    self.view.center.x
    ,但它不太适合未来

    此外,我注意到您使用的键在两次使用时有所不同(“position”和“position.x”)。我对CAAnimations不太满意,因此这可能首先是完全正确的

    问题在于:

    CGPoint origin = self.headerImage.center;
    CGPoint target = CGPointMake(0, self.headerImage.center.x);
    
    你没有瞄准正确的目标,你瞄准的是
    头部图像的当前中心
    ;所以从技术上讲,
    原点
    目标
    在这里是相同的位置

    将目标移动到superview的中心,您会很好:)

    您也可以使用
    self.view.center.x
    ,但它不太适合未来


    此外,我注意到您使用的键在两次使用时有所不同(“position”和“position.x”)。我对CAAnimations不太满意,因此这可能首先是完全正确的

    您的代码有什么问题?您的代码有什么问题?