尝试制作一个小型点击游戏,你有一个正方形网格,需要按不同的顺序点击它们。偶尔这些方块会相互交换位置。
我认为我需要将每个方块的位置放入一个数组中。然后,当需要移动时,从当前位置转到从阵列中随机选择的位置,然后删除阵列中的该位置,这样我就不会在同一个地方找到多个按钮。
不幸的是,我甚至无法移动UIButtons,更不用说在两个位置之间进行插值。
目前这将移动一个按钮:
-(IBAction)button:(id)sender
{
button.center = CGPointMake(200, 200);
}
但是我不希望它像那样工作,我希望它能像这样工作而且不起作用:
if (allButtonsPressed == YES)
{
button.center = CGPointMake(200, 200);
}
如果像这样放置它甚至不会移动:
-(void)viewDidLoad
{
[super viewDidLoad];
button.center = CGPointMake(200, 200);
}
为清楚起见,按钮是通过Interface Builder添加的,所有这些情况在执行其他操作时都有效,所以我猜UIButtons需要以特定方式移动/动画?
答案 0 :(得分:12)
viewDidLoad在视图可见之前发生,因此它将仅移动而不是动画。您可以尝试将其放在viewDidAppear方法中。
如果您希望它们动画而不是闪烁到位,您可以将内容包装在UIView动画块中。
[UIView animateWithDuration:0.5 animations:^{
button.center = CGPointMake(200.0, 200.0);
}];
由于您正在使用界面构建器,因此我假设您使用属性来跟踪按钮。如果你只使用几个设置按钮,这可以工作,但我希望在游戏中这些按钮会改变,所以你可能想要转移到代码或至少使用IBOutletCollections来跟踪按钮。
Swift 3.0
UIView.animate(withDuration: 0.5) { [weak self] in
self?.button.center = CGPoint(x: 200, y: 200)
}