проблема с масштабированием uiimageView после столкновения - PullRequest
0 голосов
/ 05 июля 2011

вот мой код:

- (void) yo { 
if(CGRectIntersectsRect(imageView.frame,centre.frame)){

    [imageView removeFromSuperview];
self.scale=self.scale+1; 

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
centre.transform = CGAffineTransformScale(centre.transform, scale, scale);
[UIView commitAnimations];      
}

- (void)viewDidLoad {
[super viewDidLoad];


[NSTimer scheduledTimerWithTimeInterval:0.01 target:self
selector:@selector(collision) userInfo:nil repeats:YES];

scale=1;

}

Я хочу масштабировать +1 «центр» каждый раз, когда он сталкивается с «imageView» (таким образом, он становится все больше и больше), но когда он сталкивается только один раз, «центр» становится очень большим, я думаю, что это происходит из-за таймер. Как я могу решить это, пожалуйста? извините за мой английский я французский: /

Ответы [ 2 ]

0 голосов
/ 05 июля 2011

centre.transform уже имеет коэффициент scale. Не нужно следить за этим самостоятельно.

Если вы намереваетесь каждый раз увеличивать размер centre на 10%, сделайте это,

centre.transform = CGAffineTransformScale(centre.transform, 1.1, 1.1);

Это добавит к существующему масштабу. Если вы считаете это большим, уменьшите величину, на которую вы масштабируете, например, 1,02 или 1,002.

Если вы намереваетесь сохранить свой собственный масштаб, вы можете сделать

centre.transform = CGAffineTransformMakeScale(scale, scale);

Вы также увеличиваете масштабный коэффициент на 1 каждый раз. Это действительно огромный фактор. Масштабный коэффициент 2 удвоит размер изображения, а 2 - втрое. А поскольку у вас достаточно короткий интервал для проверки столкновения, вам, возможно, придется взглянуть на меньший масштабный коэффициент.

0 голосов
/ 05 июля 2011

изменить это

self.scale = self.scale + 0.01;или пользовательское значение

self.scale = self.scale + 0.5;

это будет добавлено к половине шкалы, так что в 1,5 раза больше 1,0 - нормальное значение

...