Какой путь лучше переместить ImageView - PullRequest
1 голос
/ 04 февраля 2011

Я хотел бы перемещать 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 ]

2 голосов
/ 04 февраля 2011

Вы также можете использовать CGAffineTransformTranslate, например:

imgView.transform = CGAffineTransformIdentity;
imgView.transform = CGAffineTransformTranslate(imgView.transform, 0, -70);
1 голос
/ 04 февраля 2011

Технически, второй способ немного быстрее, потому что вы не касаетесь границ представлений изображений, что теоретически может быть дорогим, в зависимости от реализации Apple.Но во втором случае кадр вида может выходить за границы пикселей (правило отображения Retina, не так ли?), Что может привести к размытым изображениям.первый случай (xNew, yNew) - это верхний левый угол вида, а во втором (xNew, yNew) - центр вида.

1 голос
/ 04 февраля 2011
imgView.frame = CGRectMake(xNew, yNew, image_width, image_height);

imgView.center = CGPointMake(xNew, yNew);

На самом деле это больше сравнение.

Если вам нужно когда-либо изменить размер объекта или дать координаты от верхнего левого угла, я бы выбрал первое, если вам просто нужно переместить его, и вам удобно давать центрированные шнуры, тогда было бы более логично использовать второй метод. .

...