1

ImageView を画面上で何度も移動したいのですが、今まで 2 つの方法を見つけました。ただし、どちらがより効率的か、または両方が同じかはわかりません。アドバイスをお願いします。ありがとう。

// Create ImageView and add subview
UIImageView imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
imgView.frame = CGRectMake(0, 0, image_width, image_height);
[[self view] addSubview:imgView];   
[imgView release];

// New Coordinates
int xNew = 100;
int yNew = 130;

// First way to move ImageView:
imgView.frame = CGRectMake(xNew, yNew, image_width, image_height);

// Second way to move ImageView:
CGPoint center;
center.x = xNew;
center.y = yNew;
imgView.center = center;
4

3 に答える 3

2

次のように CGAffineTransformTranslate を使用することもできます。

imgView.transform = CGAffineTransformIdentity;
imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -70);
于 2011-02-04T15:51:41.567 に答える
1
imgView.frame = CGRectMake(xNew, yNew, image_width, image_height);

imgView.center = CGPointMake(xNew, yNew);

実際には、これはより多くの比較です。

オブジェクトのサイズを変更する必要がある場合、または左上から座標を指定する必要がある場合は、最初の方法を使用します。オブジェクトを移動するだけで、中央のコードを快適に使用できる場合は、2 番目の方法を使用する方が論理的です。

于 2011-02-04T15:51:31.113 に答える
1

技術的には、Apple の実装によっては、理論的にはコストがかかる可能性があるイメージ ビューの境界に触れないため、2 番目の方法の方がわずかに高速です。しかし、2 番目の方法では、ビューのフレームがピクセル境界の外にある可能性があり (Retina ディスプレイの規則ですよね?)、画像がぼやける可能性があります。

ただし、最初のケースでは (xNew, yNew) がビューの左上隅であり、2 番目のケースでは (xNew, yNew) がビューの中心であるため、結果は異なることに注意してください。

于 2011-02-04T15:54:04.977 に答える