我正在尝试将视图设置为使用 UIDynamics 的视图中的位置。我不清楚核心动画动画和 UIDynamics 之间的交互,但我不明白正在发生的事情。
我有一个带有单个视图的视图控制器的测试项目,一个标签,它从视图的底部中间开始,我正在尝试将动画动画到顶部中间。
// Create the label
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(160, 400, 100, 50)];
label.text = @"hello";
[self.view addSubview:label];
// Set up the animator and collision
self.animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
UICollisionBehavior *collisionBehaviour = [[UICollisionBehavior alloc] initWithItems:@[ label ]];
[collisionBehaviour addBoundaryWithIdentifier:@"wall"
fromPoint:CGPointMake(0, 50)
toPoint:CGPointMake(320, 50)];
[self.animator addBehavior:collisionBehaviour];
// Animate the label
[UIView animateWithDuration:1.0
animations:^{
label.frame = CGRectMake(160, 100, 320, 100);
}];
这只是视图顶部的一条线边界,与我的动画的开始或结束位置相去甚远。我不明白为什么它会影响按钮的动画进入其初始位置,但确实如此。
如果我注释掉 addBehaviour: 调用,那么动画效果很好。但是当我添加行为时,动画会转到错误的位置。我不明白为什么。