2013-05-14 3 views
2

Я хотел бы оживить масштабирование UIView и всего его содержимого неблокирующим способом. В настоящее время я делаю это ...Неблокирующее анимированное масштабирование UIView

[UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.1]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
      CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1); 
      self.view.transform = transform; 
    [UIView commitAnimations]; 

Однако блокирование. Я предпочел бы использовать что-то вроде ...

[UIView animateWithDuration:0.2 
        animations:^{ 
       CGAffineTransform transform = CGAffineTransformMakeScale(1.1,1.1); 
       self.view.transform = transform; 
        }]; 

... но animateWithDuration не работать с преобразованием CALayer/CGAffineTransform. Как я могу достичь такой же анимации, не блокируя ничего?

+0

возможно только вручную изменить размер и происхождение кадра представлений, вместо использования преобразования, бит более удобной работы, но он должен работать – Fonix

ответ

5

попробуйте использовать:

[UIView animateWithDuration:0.2 
animations:^{ 
    CGAffineTransform transform = 
    CGAffineTransformScale(CGAffineTransformIdentity, 2.0, 2.0); 
self.view.transform = transform; 
}]; 

Просто добавить полезную заметку к этому великому ответу, почти всегда вы хотите включить растеризации, так это выглядит гладкой

self.view.layer.shouldRasterize = YES; 
[UIView animateWithDuration:0.2 
animations:^{ 
    CGAffineTransform transform = 
    CGAffineTransformScale(CGAffineTransformIdentity, 0.5, 0.5); 
self.view.transform = transform; 
}]; 
Смежные вопросы