0

Music.app のボリューム サム リフレクションを複製しようとしています。 数学を微調整するデモ プロジェクトを作成しました。

最初は、コントローラー内のビューをアニメーション化してシンプルにしていました。それを行った後ReflectedKnobView、他のプロジェクトで使用できるようにカスタムを作成することにしました。関連するコードをコントローラーからビューにコピーしました。

コントローラーにあるコードをそのままコピーした (関連する変更を加えた) にもかかわらず、アプリを実行すると、ビューの動作がコントローラーとは異なります。

では、ReflectedKnobViewCGAffineTransformRotate()予期しない方法でビューをゆがめたりモーフィングしたりします。

コピーしたコード:

- (void)updateValues
{    
CMRotationRate data = self.mManager.gyroData.rotationRate;

self.xLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.x)];
self.yLabel.text = [NSString stringWithFormat:@"%f", RadiansToDegrees(data.y)];
self.zLabel.text = [NSString stringWithFormat:@"%f",RadiansToDegrees(data.z)];

[UIView animateWithDuration:1/20 animations:^{
    self.level3Left.transform = CGAffineTransformRotate(self.level3Left.transform, ((data.y / 240) + (data.x / 200)));
    self.level3Right.transform = CGAffineTransformRotate(self.level3Right.transform, ((-1 * data.y) / 240) + (data.x / 200));
}];
}

アールエスlevel3<Right/Left>ですUIImageView

CGAffineTransformRotate()ある場合はビューで呼び出し、別の場合はコントローラーで呼び出しているため、動作が異なると思われます。

ここで言っていることが理解できない場合は、デモ プロジェクトをダウンロードしてデバイスで実行してください。

4

1 に答える 1

0

別の質問で同様の回答をし ましたiOSでビューを回転させるときにアフィン変換パラメーターを計算するにはどうすればよいですか?

これがその再ハッシュです:

回転では、アンカー ポイント (回転が発生するポイント) とビューまたはビュー コントローラーのサイズの 2 つに注意する必要があります。

元のビュー:

ここに画像の説明を入力

アンカー ポイントが角にある場合、次のように回転します。

ここに画像の説明を入力

アンカー ポイントが中央にある場合、次のように回転します。

ここに画像の説明を入力

正方形のレイヤー、ビュー、またはビュー コントローラーがある場合、うまく回転する傾向があります。長方形のビューは、回転時に奇妙な動作をしているように見えますが、サイズの違いがわかっている場合は調整できます。

于 2013-03-25T03:40:15.390 に答える