2012-03-03 6 views
6

多分私は得られない。私はUIViewが45度回転して消えますか?

self.tweetPeak.transform = CGAffineTransformMakeRotation(RADIANS(45)); 

を行うとラジアンそれが消えます簡単なのUIViewオブジェクトの

#define RADIANS(degrees) ((degrees * M_PI)/180.0) 

です。

私はそれがちょうど見るために薄いと思う。私の印象は、ビューが20〜45度の範囲で小さくなっているということです。

この意味は?ビューを不透明に設定しようとしました。無効。

あなたが回転した後のフレームを調整停止する必要がクリス

+0

画面外に回転している可能性はありますか? –

+0

関連していませんが、 'RADIONS'はその定義の恐ろしい名前です。それは、それが何をしているのか、どのように使用するのかを示すものではありません。 –

+0

@ Paul.sそれはスタイルの問題です、IMO、それはマクロのための素晴らしい名前ですが、私はそれが 'TO_RADIANS'、' DEGREES_TO_RADIANS'などとラベル付けされているのを見ました。それは本当に必要なものだけに依存します。 –

答えて

9

、それは変換行列にストレッチ望ましくない原因、私がなぜ正式な理由がわからないんだけど、それは自分自身を使用して、アップルとは何かを持っています2D/3Dの平行移動/回転/スケールを表す伝統的なマトリックスではなく、先ほど同じ問題を抱えていましたが、そのビューを回転させる代わりに、実際に回転させたい実際のビューのコンテナにして回転させました。

+3

CGAffineTransformとCATransform3Dは、絶対に標準的な伝統的な行列です。アップルは何も変なことはしていない。あなたの問題は ' - [CALayer frame]'は_derived_値で、これは 'position'、' bounds'、 'anchorPoint'、' transform'プロパティに基づいています。トランスフォームを変更すると、フレームが変更されます。フレームを変更しようとすると、レイヤーは位置を調整しようとし、bounds.sizeが機能するようにします。解決方法:フレームを設定しないでください。 –

+0

CATransform3Dが伝統的な行列である場合、どのようにセットアップできないのか、伝統的な直交行列を言い、それでも私の層は見えますか?それとも視点1?私はあなたのことを疑っているわけではありませんが、伝統的にそれを使用していないのですが、なぜ.m34はFOVに似たものを制御していますか?あなたが私に尋ねるなら、これは決して標準的なものではありません。しかし私は間違っている可能性があります。 –

+0

私はこれを理解しようとかなりの努力をしてきました。あなたの2つのコメントは私の問題を理解するのに本当に役立ちました。これを実行している誰かのために...私はいくつかのラベルを回転させたい初期化をしました。私はviewDidLoadでこれを持っていました...(viewWillAppearの後までフレームが設定されているので)正しく動作するようにviewDidAppearに移動しなければなりませんでした。 –

関連する問題