我想在屏幕上多次移动一个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;
答案 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)是视图的中心。