2012-04-10 4 views
0

私はうまくいけば簡単な解決策があるという問題があります。私は、ボタン、タイマー、フレーム、cgaffinetransformrotations、および遅延を使用してボブ効果を作成しようとしています。ボタンを回転させてボタンのフレームを設定して、yを10ピクセルほど減らすか増やすと、ボタンのフレームが通常よりも大きくなります。最終的な結果は、画面を呑み込むまで常に増加するボタンです。フレームのCGPointのみを設定してください

私は上向きおよび下向きの動きをcgaffinetranslationsにしようとしましたが、これはtransformプロパティ(回転と同じもの)を使用しています。結果は非常に不安定で非現実的なボブです。

私が達成しようとしているのは、幅と高さを指定することなく、フレームの原点コンポーネントを設定することです。ハードコードされた幅と高さを指定するだけで、再び平衡に近づいている。

アイデア?

ありがとうございます!

CODE:

- (void)movePlay{ 
[self performSelector:@selector(moveDown:) withObject:play]; 
[self performSelector:@selector(rotateRight:) withObject:play afterDelay:0]; 
[self performSelector:@selector(moveUp:) withObject:play afterDelay:0.5]; 
[self performSelector:@selector(rotateLeft:) withObject:play afterDelay:1]; 

} 

- (void)moveUp:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:.5]; 
log.transform = CGAffineTransformMakeTranslation(0, -20); 
[UIView commitAnimations]; 

} 

- (void)rotateRight:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
log.transform = CGAffineTransformMakeRotation(0.0174532925*10); 
[UIView commitAnimations]; 

} 
+0

だけヒントを使用して最初にそれらを結合:「transformプロパティをした場合の警告(ないアイデンティティは、このプロパティの値を変換するフレームであります)は定義されていないため、無視する必要があります。つまり、フレームの代わりに境界を設定する必要があります。 – lukasz

答えて

1

これは単なるアイデアです。 すべての別々の変換を組み合わせてみてください。だからではなく、独立してコミットするの

log.transform = CGAffineTransfor..., 

は、iOS用リファレンスライブラリから

CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2); 
CGAffineTransformRotate(CGAffineTransform t1, CGFloat angle); 
etc. 
+0

Worked!ありがとう! – David

関連する問題