2011-02-04 9 views
1

ImageViewを何回か画面の周りに移動したいのですが、これまで2通りの方法がありました。しかし、私はどちらがより効率的であるかわからない、あるいは両方が同じであるかもしれない。どうかアドバイスをいただけますか?ありがとう。どのようにImageViewを移動するのが良いですか?

// 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; 

答えて

1

技術的には、第二の方法は、ほんの少し速くなりますAppleの実装。しかし、第2の方法では、ビューのフレームがピクセル境界外になることがあります(Retinaはルールを表示しますが、そうではありませんか?)。

ただし、最初のケース(xNew、yNew)はビューの左上隅であり、2番目のビュー(xNew、yNew)はビューの中心であるため、結果は異なります。

1
imgView.frame = CGRectMake(xNew, yNew, image_width, image_height); 

imgView.center = CGPointMake(xNew, yNew); 

実はこれは比較の詳細です。

オブジェクトのサイズを変更する必要がある場合、または左上の座標を与える場合は、移動する必要がある場合は最初に移動し、中央のコードを与えるのが快適な場合は、2番目の方法。

そのようにあなたはまた、CGAffineTransformTranslateを使用することができ
2

:あなたがに応じて、理論的には高価であるかもしれない、イメージビューの境界には触れていないので

imgView.transform = CGAffineTransformIdentity; 
imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -70); 
関連する問題