Я пытаюсь вручную изменить поворот вида в UIDynamics, но вращение представления всегда сбрасывается после обновления. В документе documentation говорится, что метод UIDynamicAnimator updateItemUsingCurrentState: должен обновлять положение и поворот элемента, но обновляется только позиция.
Я создал короткий пример, где квадратный снимок падает с экрана, и после касания он должен быть расположен к месту касания и повернут на 45 градусов. Однако вращение не происходит (иногда вращение можно увидеть в течение доли секунды, но после этого он снова сбрасывается):iOS: UIDynamicAnimator updateItemUsingCurrentState не работает с вращением
#import "ViewController.h"
@interface ViewController()
{
UIDynamicAnimator* _animator;
UIView* _square;
}
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
_square = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
_square.backgroundColor = [UIColor grayColor];
[self.view addSubview:_square];
_animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UIGravityBehavior *gravityBehavior = [[UIGravityBehavior alloc] initWithItems:@[_square]];
gravityBehavior.magnitude = 0.1;
[_animator addBehavior:gravityBehavior];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
_square.center = [touch locationInView:self.view];
NSLog(@"transform before rotation: %@", NSStringFromCGAffineTransform(_square.transform));
_square.transform = CGAffineTransformMakeRotation(M_PI/4);
[_animator updateItemUsingCurrentState:_square];
NSLog(@"transform after rotation: %@", NSStringFromCGAffineTransform(_square.transform));
}
@end
(я оставил здесь весь код, так что вы можете авторские вставьте его во вновь созданный проект. Надеюсь, не слишком много нерелевантного кода, чтобы он был тревожным).
Так что я делаю что-то не так? Или не удается явно изменить поворот представления?
Сладкий! Это неудобно, что updateItemUsingCurrentState не работает для этого – marchinram