0

当视图加载时,我需要使用 UIView 动画移动按钮。当按下按钮时,几乎相同的动画在另一个视图中起作用。这是我的 ViewDidLoad

HTMLButton.hidden = NO;
HTMLButton.enabled = NO;

[UIView animateWithDuration:1.0
                 animations:^{
                     CGRect HTMLRect = HTMLButton.frame;
                     HTMLRect.origin = CGPointMake(HTMLRect.origin.x, HTMLRect.origin.y + 70);
                     HTMLButton.frame = HTMLRect;
                     NSLog(@"Animation Called");
                 }];

NSLog 确实编译但根本没有动画。我不能在这里调用动画还是我做错了什么?

感谢任何可以提供帮助的人

编辑:我在不同的按钮中使用了从单独的 IBAction 调用的相同动画,动画仍然不起作用

4

1 回答 1

0

viewDidLoad 或 viewDidAppear 内部可能会干扰动画。viewDidLoad 中可能还有其他任务,因此当您调用帧更改动画时,您的按钮甚至没有完全加载。我不确定这是否能解决您的问题,但如果它发生在我身上,我肯定会尝试一下:

double delayInSeconds = 0.2; //Or you may play with it further
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

    [UIView animateWithDuration:1.0
             animations:^{
                 CGRect HTMLRect = HTMLButton.frame;
                 HTMLRect.origin = CGPointMake(HTMLRect.origin.x, HTMLRect.origin.y + 70);
                 HTMLButton.frame = HTMLRect;
                 NSLog(@"Animation Called");
             }];

});

这会稍微延迟动画调用(用户无法理解 0.2 秒的延迟),因此您的视图控制器处于等待状态,而不是进行任何初始化。

于 2013-04-27T20:03:36.170 回答