0

私がやろうとしているのは、ビューを左右に回転させると同時に、その位置を上下に動かすことです。

これが私が持っているコードです:

CGAffineTransform leftWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(-12.0));
CGAffineTransform rightWobble = CGAffineTransformRotate(CGAffineTransformIdentity, RADIANS(12.0));

flyingGuy.transform = leftWobble;  // starting point

[UIView beginAnimations:@"wobble" context:flyingGuy];
[UIView setAnimationRepeatAutoreverses:YES];
[UIView setAnimationRepeatCount:1000];
[UIView setAnimationDuration:1.3];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(wobbleEnded:finished:context:)];

flyingGuy.transform = rightWobble;
CGRect frame = flyingGuy.frame;
frame.origin.y += 10;
[flyingGuy setFrame:frame];

[UIView commitAnimations];


- (void)wobbleEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context  {
    if ([finished boolValue]) {
        UIView* item = (UIView *)context;
        item.transform = CGAffineTransformIdentity;
    }
}

現在のコードでは、ビューのサイズは上下に移動するにつれて変化します。助言がありますか?

4

1 に答える 1

5

変換を設定した後は、フレームを設定したり取得したりしないでください。

ドキュメントから:

警告プロパティがID変換でない場合、transformこのプロパティの値は未定義であるため、無視する必要があります。


代わりにすべきこと

centerビューのプロパティを変更します。とにかく位置を変更するだけであり、これは変換が適用されている場合に安全です。

于 2012-06-11T15:27:38.087 に答える