UIView 动画不起作用

Posted

技术标签:

【中文标题】UIView 动画不起作用【英文标题】:UIView animations are not working 【发布时间】:2014-03-10 10:00:09 【问题描述】:

我正在使用动画来更改淡入和淡出的视图框架。但是它们不起作用。 操作系统:ios7

[UIView animateWithDuration:0.8 animations:^
      [objArticleTable setFrame:CGRectMake(CGRectGetMinX([objArticleTable frame]), CGRectGetMinY([objArticleTable frame]), CGRectGetWidth([objArticleTable frame]), 0)];];

【问题讨论】:

你把框架的高度设置为0???为什么? 我已将其从 50 更改为 0 你可以把alpha改成fadeOutfadeIn.. 你在主线程上执行动画吗? 考虑使用仿射变换来执行操作。 【参考方案1】:

试试这个:


objArticleTable.alpha = 0.0f;
objArticleTable.hidden = NO;
[UIView animateWithDuration:0.5f
     animations:^
         objArticleTable.alpha = 1.0;
      completion:^(BOOL finished) 
          //Done
     ];

【讨论】:

【参考方案2】:

fade-in 效果可以使用

objArticleTable.alpha = 0.0f;
[UIView animateWithDuration:0.8 animations:^
                                              [objArticleTable setFrame:CGRectMake(CGRectGetMinX([objArticleTable frame]), CGRectGetMinY([objArticleTable frame]), CGRectGetWidth([objArticleTable frame]), 50)];];
                                               objArticleTable.alpha = 1.0f; 
                                            
 completion:nil];

对于fade-out

objArticleTable.alpha = 1.0f;
[UIView animateWithDuration:0.8 animations:^
                                               [objArticleTable setFrame:CGRectMake(CGRectGetMinX([objArticleTable frame]), CGRectGetMinY([objArticleTable frame]), CGRectGetWidth([objArticleTable frame]), 0)];];
                                                objArticleTable.alpha = 0.0f; 
                                            
     completion:nil];

【讨论】:

【参考方案3】:

试试这个.. 仅当您想更改 alpha 将采用淡入和淡出的帧时才使用设置帧..

[UIView animateWithDuration:10.0f animations:^
objArticleTable.alpha = 1.0f;
[objArticleTable setFrame:CGRectMake(CGRectGetMinX([objArticleTable frame]),CGRectGetMinY([objArticleTable frame]), CGRectGetWidth([objArticleTable frame]), 50)];

completion:^(BOOL finished)
[UIView animateWithDuration:10.0f animations:^
    objArticleTable.alpha = 0.0f;
[objArticleTable setFrame:CGRectMake(CGRectGetMinX([objArticleTable frame]), CGRectGetMinY([objArticleTable frame]), CGRectGetWidth([objArticleTable frame]), 0)];
];
];

【讨论】:

以上是关于UIView 动画不起作用的主要内容,如果未能解决你的问题,请参考以下文章

动画 UIView 宽度不起作用

当我将 UIView 动画放在不同类的 containerView 中时,为啥我的 UIView 动画不起作用?

为啥在添加视图后立即启动 UIView 动画不起作用?

通过动画调整 UIView 大小时约束不起作用

添加延迟动画时,UIView 动画不起作用

UIView 开始动画不起作用