为啥这个简单的动画在 iOS 7 上不起作用?
Posted
技术标签:
【中文标题】为啥这个简单的动画在 iOS 7 上不起作用?【英文标题】:Why is this simple animation not working on iOS 7?为什么这个简单的动画在 iOS 7 上不起作用? 【发布时间】:2013-09-23 20:04:39 【问题描述】:在我的项目中,我有一个简单的动画,我只是将视图从左向右移动。这在 ios 6 中运行良好,但是当我在 iOS 7 中运行时,它什么也没做。有人知道为什么吗?如果动画非常简单,我该如何为 iOS 7 解决这个问题?我的代码是:
- (void) showAnimation
if (IS_IPAD())
[UIView animateWithDuration:50.0f
delay:1
options:UIViewAnimationOptionRepeat
animations:^
ViewBOLIVIA.frame = CGRectMake(1024,0, ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
completion:nil];
else
if (IS_IPHONE_5)
[UIView animateWithDuration:50.0f
delay:1
options:UIViewAnimationOptionRepeat
animations:^
ViewBOLIVIA.frame = CGRectMake(568,0, ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
completion:nil];
else
[UIView animateWithDuration:50.0f
delay:1
options:UIViewAnimationOptionRepeat
animations:^
ViewBOLIVIA.frame = CGRectMake(480,0, ViewBOLIVIA.frame.size.width, ViewBOLIVIA.frame.size.height);
completion:nil];
我确实更新了,我使用 Xcode 5 和 iOS 7,所以任何帮助,你知道如何解决这个问题吗?
【问题讨论】:
你在使用自动布局吗? 不,我没有使用自动布局 您是否使用断点来验证代码是否已到达? 是的,我正在使用断点和 Nslogs 显示视图的新位置,但我不知道为什么没有显示任何内容 O_o? 我也有同样的问题。所有动画都不起作用。基本相同的代码。 【参考方案1】:好的,我想我解决了。在 iOS 7 之前,可以在带有故事板的 viewDidLoad 中运行动画。如果您将动画调用移动到- (void)viewDidAppear
,那么它们应该会重新开始工作。因此,在您的情况下,您需要在- (void)viewDidAppear
中调用[self showAnimation];
。
- (void)viewDidAppear
[self showAnimation];
【讨论】:
感谢 jimbob 但对我不起作用,我将继续尝试寻找解决方案,我检查断点和 NSLogs,如果调用 viewDidLoad 和 viewdidapear 中的方法,并运行但不显示,我不不知道为什么? T_T 你试过使用 UIViewAnimationOptionBeginFromCurrentState 吗? Sorry Dude,不工作,对于动画,我需要 UIViewAnimationOptionRepeat,因为我需要循环或无限运行动画,同时我使用应用程序 U_U【参考方案2】:我发现将代码放在这个方法中是可行的。
-(void)viewDidAppear:(BOOL)animated
menuView.alpha = 0;
topLabel.alpha = 0;
[UIView animateWithDuration:1.5 animations:^
menuView.alpha = 1;
topLabel.alpha = 1;
];
[super viewDidAppear:animated];
【讨论】:
以上是关于为啥这个简单的动画在 iOS 7 上不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
Today Widget Extension 动画在 iOS 10 上不起作用
设置 UIBarButtonItem 动画在 iOS 11 上不起作用