ObjC - UIViews: анимация просмотра и подпредставления независимо? - PullRequest
2 голосов
/ 10 октября 2010

У меня есть UIView и его подпредставление. Когда я анимирую myView (size.x + 20), мое подпредставление тоже анимируется, однако я хочу перевести свое подпредставление одновременно (origin.x-40) (без перемещения подпредставления из-за изменения размера myView).

Я смог сделать это, отрегулировав переводы (или лучшую позицию, потому что я мог бы изменить y позже) .fromValue, .toValue и .duration для компенсации движения, вызванного изменениями в myView.

UIView beginAnimations:nil context:NULL];
[myView setFrame:pVnewFrame];
[UIView commitAnimations];

CABasicAnimation *bBTranslateAnimation = [CABasicAnimation animationWithKeyPath:@"position"]; 
bBTranslateAnimation.delegate = self;
bBTranslateAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 480)];
bBTranslateAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 436)];
bBTranslateAnimation.duration = 0.35;
[buttonBar addAnimation:bBTranslateAnimation forKey:@"anim"];

Но это не правильное решение. Есть ли хороший способ для перемещения просмотра и подпредставлений независимо друг от друга? (настройка autoresizeSubviews и autoresizingMask не помогает)

Заранее спасибо!

1 Ответ

3 голосов
/ 01 мая 2012

Способ сделать это состоит в том, чтобы сделать два вида братьями и сестрами, вместо того, чтобы сделать один вид подвидом другого. Просто поместите представление, которое было подпредставлением, поверх представления, которое было родительским, и оно должно выглядеть так, как вы этого хотите.

Если вы хотите, чтобы дочернее представление связывалось с содержимым предыдущего родительского представления, вам может понадобиться поместить представление, которое было дочерним, в контейнерное представление, которое является родственным представлению, которое было родительским, установите вид контейнера на opaque = no и с чистым фоновым цветом. Однако это повлияет на производительность.

...