3

グリッドのようなサムネイルスクロールビューがあり、最初にすべてのサムネイルを初期化し、次にそのフレームを次のように設定しています。

thumbnail.frame = CGRectMake(0, 0, 100, 100);

その後willAnimateRotationToInterfaceOrientation、これらのサムネイルを次のように再配置します。

thumbnail.transform = CGAffineTransformMakeTranslation(posX, posY);

ただし、上記の方法の後で位置を確認する場合:

NSLog(@"thumbnail frame x: %f", thumbnail.frame.origin.x);

変換操作を含む位置を返しますが、0,0

代わりに、再配置の目的transformで新しいものを設定するframeことには本当の利点がありますか?UIView

4

2 に答える 2

1

主な利点は、次のようなより多くの種類のアフィン変換を使用できることです。

  • CGAffineTransformTranslate
  • CGAffineTransformScale
  • CGAffineTransformRotate
  • CGAffineTransformInvert
  • CGAffineTransformConcat

ただし、フレーム構造体はフレームのみを設定します。

その他の注意事項:

CGAffineTransformMakeTranslation(posX, posY)1)プロパティのみを変更すると仮定した場合のパフォーマンス上の理由から、プロパティcenterを変更するよりも速く動作するはずですが、誰にもわかりませんframe。したがって、再配置の目的で、この方法を使用するか、centerプロパティを変更します。

2) とは対照的に、 はビューCALayerの実際の位置を変更しtransformますUIViewtransform

于 2012-05-30T10:01:27.217 に答える
0

平行移動変換を使用すると、変換された視点でビューが移動 (平行移動) します。つまり、最初にビューを回転させてから平行移動すると、回転に対する方向に移動します。center簡単な並べ替えのために、代わりにプロパティを変更することをお勧めします。frameこのようにして、引き続きプロパティを意味のある方法で使用できます。

于 2012-05-30T10:08:37.280 に答える