/ / Анимиране на UIView и неговите подслойни - iphone, анимация, uiview, calayer

Анимиране на UIView и неговите подслойни - iphone, анимация, uiview, calayer

Имам подкласове UIView който се състои от няколко слоя (най-вече CAShapeLayers с няколко CATextLayers). Проблемът ми е, че ако оживея преоразмеряването на UIView използвайки анимационен блок (beginAnimations, commitAnimations) и препредаване на подслоевете в отменено layoutSubviews, тогава слоевете не се анимират с UIView.

По - долу е моят код, за да анимирате рамката на UIView:

miniView.backgroundColor = [UIColor orangeColor];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationRepeatCount:MAXFLOAT];
[UIView setAnimationRepeatAutoreverses:YES];

miniView.frame = newFrame;

[UIView commitAnimations];

Така че проблемът е, че виждането е правилноно подложките не са. Виждам, че гледката се увеличава и свива, но подлепите растат незабавно и след това остават с по-големия размер. Какъв е най-добрият начин за преоразмеряване на подслоевете на изглед при преоразмеряване на изгледа? И как да направя тези анимирани по същия начин с изгледа на родителите?

Отговори:

1 за отговор № 1

Ще трябва да видя повече код, за да реша проблема, но можете да опитате да анимирате слоя миниView вместо неговия изглед.

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
animation.fromValue = [NSNumber numberWithFloat:0.0];
animation.toValue = [NSNumber numberWithFloat:1.0];
// additional setup...

[miniView.layer layoutIfNeeded];
[miniView.layer addAnimation:animation forKey:@"whateverYouWant"];

Вместо да използвате UIKit анимация, това би трябвало да е по-гъвкаво, щом се окажете с него.