哪种方式更适合移动ImageView

时间:2011-02-04 15:43:09

标签: iphone imageview move cgpoint

我想在屏幕上多次移动一个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;

3 个答案:

答案 0 :(得分:2)

您也可以使用CGAffineTransformTranslate,如下所示:

imgView.transform = CGAffineTransformIdentity;
imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -70);

答案 1 :(得分:1)

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

imgView.center = CGPointMake(xNew, yNew);

实际上这更像是比较。

如果您需要调整对象的大小或想要从左上方给出坐标,我会选择第一个,如果您只需要移动它并且很舒服给出中心线,那么使用第二种方法似乎更合乎逻辑

答案 2 :(得分:1)

从技术上讲,第二种方式更快一点,因为你不接触图像视图的边界,理论上这可能是昂贵的,这取决于Apple的实现。但在第二种方式中,视图的帧可能会落在像素边界之外(Retina显示规则,不是吗?),这可能会导致图像模糊。

但请注意,结果会有所不同,因为在第一种情况下(xNew,yNew)是视图的左上角,而在第二种情况下(xNew,yNew)是视图的中心。