好吧,这是一个新手问题,所以我提前道歉。我有一个 UIView,我在屏幕外的 Interface Builder 中布置了它。当用户按下按钮时,我想在屏幕上为这个视图设置动画。它可以工作,但我无法与 UIView 中的任何按钮交互。我已经读过,当您制作动画时只有视图会移动,并且实际对象会保留它们的位置,所以我尝试设置 UIViews 图层的位置,但这会导致我的 UIView 菜单在左侧显示额外的 81 个像素。发生这种情况时,我可以与按钮交互,但我需要它与屏幕右侧齐平。这是我在 openMenu 按钮上的 IBAction 中的代码:
CABasicAnimation *moveView = [CABasicAnimation animationWithKeyPath:@"position"];
moveView.delegate = self;
moveView.duration=0.5;
// If the menu is displayed, close it!
CGPoint currentPosView = [[entirePage layer] position];
CGPoint destView;
[moveView setFromValue:[NSValue valueWithCGPoint:currentPosView]];
if (menuDisplayed) {
// Move right to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y + 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
// Otherwise, open it
} else {
// Move left to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y - 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
}
// Animate the view
[[entirePage layer] addAnimation:moveView forKey:@"move"];
// Set the final position of our layer
[[entirePage layer] setPosition:destView];
menuDisplayed = !menuDisplayed;
然后在 animationDidStop 方法中:
CGPoint currentPosMenu = [[menuBar layer] position];
if (menuDisplayed) {
currentPosMenu.x -= 81;
} else {
currentPosMenu.x += 81;
}
[[menuBar layer] setPosition:currentPosMenu];
帮助???