UIView 动画只工作一次
Posted
技术标签:
【中文标题】UIView 动画只工作一次【英文标题】:UIView Animation Working Only Once 【发布时间】:2011-02-16 14:32:31 【问题描述】:我正在尝试关闭我之前使用相同的动画块添加的UIView
,并从alpha 0 -> alpha 100
和[self.view addSubview:newInitiateWindow.view];
淡入淡出创建窗口时动画块正确执行,但是当它被关闭时,它只是停止 0.75 秒,然后消失,没有任何动画。即使我删除 removeFromSuperview
并释放调用,它也不会将淡入淡出设置为透明。
这是应该生成动画的代码:
[UIView transitionWithView:newInitiateWindow.view
duration:0.75
options:UIViewAnimationOptionCurveEaseIn
animations:^
newInitiateWindow.view.alpha = 0;
completion:^(BOOL finished)
if(finished)
[newInitiateWindow.view removeFromSuperview];
[newInitiateWindow release];
newInitiateWindow=nil;
];
【问题讨论】:
尝试将 UIViewAnimationOptionAllowAnimatedContent 添加到您的选项中。 我尝试了同样的结果。这很奇怪,因为这个完全相同的代码适用于淡入(除了更改 alpha = 100)并且我在开始动画块之前添加了子视图。 好的,这里有一些进一步的测试......即使使用最基本的块动画,我仍然无法让它工作:[UIView animateWithDuration:1.0 animations:^ newInitiateWindow.view.alpha = 0.0 ; ]; 这段代码是在主线程上运行的吗? 【参考方案1】:你是 100 的字面意思吗?完整的 alpha 版本是 1.0,这可能会导致一些问题。
这可能是 ios 和代码位置的错综复杂,但很可能只是输入错误,可能是间接的拼写错误
【讨论】:
你修好了!非常感谢。我不敢相信我是个白痴。有趣的是,它使用 100 的值淡入淡出,但使用 0 的值不会淡出。将其切换为 1.0f 淡入和 0.0f 淡出是解决方案。【参考方案2】:过渡应该添加/删除过渡中列出的视图的子视图。他们不应该修改视图的属性。你想要+animateWithDuration:delay:options:animation:completion:
。
【讨论】:
如果我执行以下代码,行为完全相同:( [UIView animateWithDuration:0.75 delay:0.0 options:UIViewAnimationOptionAllowAnimatedContent animations:^ newInitiateWindow.view.alpha = 0; completion:^(BOOL完成) [newInitiateWindow.view removeFromSuperview]; [newInitiateWindow release]; newInitiateWindow = nil; ];以上是关于UIView 动画只工作一次的主要内容,如果未能解决你的问题,请参考以下文章