4

私はこの質問に少し混乱しています。

を変えてビューを移動できることは知っているのですself.frame.originが、transform というプロパティがあることを知り、これは画面上でビューを移動するためのものなどだと思っていまし
た。

だから私は知りたい:移動UIView(またはそのサブクラス)に使用する必要があるプロパティと、別のプロパティは何ですか?または、私が完全に間違っている場合は、正しい方法を教えてください。

4

4 に答える 4

8

frameプロパティは、そのUIViewスーパービューに対する相対的な位置を定義します。ビューを移動したい場合は、それが方法です。

このtransformプロパティは基本的CGAffineTransformに、ビューのバッキング レイヤーに適用されます。ほとんどの場合、ビューを移動するだけの場合は、このプロパティを使用したくないでしょう。

このtransformプロパティは、レイヤー (つまりビュー) を回転またはスケーリングする場合に役立ちます。場合によっては、回転を適用するときに、その位置を「維持」するために移動する必要もあります。その場合は、transformプロパティを使用して移動します。

于 2013-04-23T19:34:05.853 に答える
6

さらに情報を追加するには

フレームを使用する理由。Viewプログラミングガイドより引用

アニメーションを実装する場合は、通常、ビューの変換プロパティを変更します。たとえば、このプロパティを使用して、ビューの中心点を中心に回転するアニメーションを作成できます。スーパービューの座標空間内でビューの位置やサイズを変更するなど、ビューに永続的な変更を加えるためにこのプロパティを使用しないでください。そのタイプの変更については、代わりにビューのフレーム四角形を変更する必要があります

変換を使用する理由。Demystifying CGAffineTransformから引用

翻訳とは、「動く」という言い方です。もちろん、ビューの frame プロパティの origin 値を変更することで移動を実行できます (スーパービューに関連してビューを移動します) が、フレーム プロパティを他の変換と共に使用できないため、移動変換は重要なもの。

于 2013-11-27T18:25:57.783 に答える
4

フレームを更新することで UIView を移動できます。Transform は、ビューを回転およびスケーリングするために使用されます。ビューをアニメーションで動かしたい場合は、以下のようなアニメーション ブロックを使用してみてください。

    [UIView animateWithDuration:0.3 //Time for the animation
                             animations:^{
                               myView.frame = CGRectMake (0,0,10,20) //Move your frame
                             }
                             completion:^(BOOL finished){
                                //Do stuff when the animation completes
                             }];
于 2013-04-23T19:32:59.820 に答える
1
CGrect = rect1 = [view1 frame];

rect1.origin.x = newX;
rect1.origin.y = newY;

アニメーションでは setFrame を使用する必要があります。^{ <here> }

[view1 set enter code here Frame:rect1];
于 2013-07-28T11:38:06.540 に答える