2

次のコードのいずれかを使用すると、ボタンは 2D ではなく 3D で回転します (画面に対して平らになります)。3D 動作を回避するにはどうすればよいですか? 回転中のボタンの外観は次のとおりです。

ここに画像の説明を入力

CGAffineTransform rotationTransform = CGAffineTransformIdentity;
    rotationTransform = CGAffineTransformRotate(rotationTransform, (offset/(180.0 * M_PI)));
    button.transform = rotationTransform;

.

    button.transform = CGAffineTransformRotate(CGAffineTransformIdentity, (offset/(180.0 * M_PI)));

.

button.transform = CGAffineTransformMakeRotation(offset/(180.0 * M_PI));
4

2 に答える 2

2

Apple の従業員からの回答は次のとおりです。

トランスフォームを設定すると、フレームの定義が不明確になり、ビューのサイズ変更や配置にフレームを使用する必要がなくなります。代わりに center プロパティを使用してみてください。おそらく 3D 回転は得られませんが、frame と trnsform の設定による複合効果による歪みが生じます。

于 2013-09-05T22:12:14.927 に答える
0

私は本当に迷惑な同じ問題に遭遇し、ついに解決しましたが、理由はまだわかりません.

"viewDidLayoutSubviews" メソッドで2D 回転を実行しようとすると、予期しない 3D 回転が発生しました。

double radius = (degree / 180.0) * M_PI;
uiImageView.transform = CGAffineTransformMakeRotation(radius);

私の解決策は、「viewDidLayoutSubviews」以外の場所で変換を実行することであり、完全に機能しています。

興味深いことに、煩わしい 3D 回転が発生し、しばらく iPhone の向きを変え続けると、3D 回転が突然消え、2D 回転が戻ってきて場所を取りますが、画像は歪んだ形のままです。iOS が "viewDidLayoutSubviews" で何らかの内部変換を行っている可能性があり、追加の変換を課すと事態が混乱する可能性があります。しかし、私の推測では、しばらくすると消える理由を説明できません。また、「viewDidLayoutSubviews」の「a、b、c、d、tx、ty」など、「uiImageView.transform」のメンバーをNSLogしようとしましたが、手がかりがありませんでした。

解決策: コードをチェックして、「viewDidLayoutSubviews」または同様の方法で回転を実行しているかどうかを確認し、実行している場合は、それを別の場所に移動して指を交差させてみてください。

于 2016-01-26T17:47:50.270 に答える