0

これが私が使用しているコードで、UIImageViewそれを上下に浮かせます。

    [UIView animateKeyframesWithDuration:2.0 delay:0.0 options:UIViewKeyframeAnimationOptionRepeat animations:^{
        [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.25 animations:^{
            self.slider.transform = CGAffineTransformMakeTranslation(0, -5.0);
        }];
        [UIView addKeyframeWithRelativeStartTime:0.25 relativeDuration:0.5 animations:^{
            self.slider.transform = CGAffineTransformMakeTranslation(0, 5.0);
        }];
        [UIView addKeyframeWithRelativeStartTime:0.75 relativeDuration:0.25 animations:^{
            self.slider.transform = CGAffineTransformMakeTranslation(0, 0.0);
        }];
    } completion:^(BOOL finished) {

    }];

ただし、アニメーションが終了してから再開するまでにこの遅延があると、このように表示されます。

流動的にするにはどうすればよいですか?

4

1 に答える 1

1

正確にどのような効果が得られるかはわかりませんが、これにより、コードが遅延なく行うようなことが得られると思います。私は通常、変換を使用するのではなく、制約をアニメーション化することによってこれを行います。この例では、ビューの上部への制約に IBOutlet (topCon) を作成しました。

-(IBAction)floatView:(id)sender {
    static int i= 1;
    static float duration = .25;
    [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
        self.topCon.constant = self.topCon.constant - (5 * i);
        [self.view layoutIfNeeded];
    } completion:^(BOOL finished) {
        i = (i == 1 || i == 2)? -2 : 2;
        duration = 0.5;
        [self floatView:self];
    }];
}
于 2013-11-01T05:10:59.657 に答える