私はiPadアプリを作成しており、現在のビューのサイズでユーザーを更新したいと考えています。私は、CGAffineTransformのスケールを計算し、xScaleに(関連するビューの)幅とyScaleの高さを掛け合わせることでこれを行うことがありました。私はこれをやり続けたいと思いますが、私はもはや2次元変換をやっていません。CATransform3Dからスケール情報を抽出するためにどのような式を使うべきでしょうか。CATransform3Dから 'スケール'を取得
お手伝いできますか?
私はiPadアプリを作成しており、現在のビューのサイズでユーザーを更新したいと考えています。私は、CGAffineTransformのスケールを計算し、xScaleに(関連するビューの)幅とyScaleの高さを掛け合わせることでこれを行うことがありました。私はこれをやり続けたいと思いますが、私はもはや2次元変換をやっていません。CATransform3Dからスケール情報を抽出するためにどのような式を使うべきでしょうか。CATransform3Dから 'スケール'を取得
お手伝いできますか?
あなただけの層の上にvalueForKeyPath:
を行う層の現在の規模を取得するには:
CGFloat currentScale = [[layer valueForKeyPath: @"transform.scale"] floatValue];
他のキーは、これは素晴らしい仕事をApples Core Animation Programming Guide
私はAPIに精通していませんが、CATransform3D
は3D変換を行うための通常の4x4変換マトリックスのようです。
スケール、回転、および平行移動の組み合わせ以上のものを表すと仮定すると、CATransform3D
が行または列のメジャーであるかどうかによって、左上の3x3の行または列のいずれかの大きさを計算することによって、それぞれ、
たとえば、行方向の場合、x方向の縮尺は、(m11 * m11)+(m12 * m12)+(m13 * m13)の平方根です。 yとzのスケールは、同様に2番目と3番目の行の大きさになります。
CATransform3DMakeTranslation
のドキュメントからは、CATransform3D
が本当に行優先であるようです。
で見つけることができます!承認された回答でなければなりません。 – Collin
非常に便利です:) Tks a lot! – TonyMkenu
面白いですが、いつもnil [[self presentationLayer] valueForKey:@ "transform.scale"] – Andy