繁体   English   中英

哪种方式更适合移动ImageView

[英]Which way is better to move an ImageView

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

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

imgView.transform = CGAffineTransformIdentity;
imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -70);
imgView.frame = CGRectMake(xNew, yNew, image_width, image_height);

imgView.center = CGPointMake(xNew, yNew);

实际上这更多的是比较。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM