ios - animateWithDuration 不是动画 UIButton

标签 ios objective-c core-animation nstimer

我在 UIView 上有一个类别,应该动画 UIButton 从一个点到另一个点的移动。它正在运行,但按钮根本不动。看起来动画是成功的,但根本没有动静。

该按钮由一个重复的 NSTimer 调用,它倒计时到按钮动画的点(每秒检查一次是否为真,如果它是剩余点,当剩余点 == 0 动画时)。还有一个计时器每 0.01 秒调用一次,以对麦克风上的电平进行一些处理,但如果我提高频率,它仍然不起作用。

我认为我的动画代码没问题 - 但有些东西阻止了动画正确显示。如果我在动画之前在 viewDidLoad 中动画(虽然它从终点开始并动画到我在 Storyboard中放置按钮的位置),但是如果我在程序流程中动画它不起作用。

该类别正确地超出了我的终点,并在 5 秒后“完成”。

类别:

@implementation UIView (Animation)
- (void) moveTo:(CGPoint)destination duration:(float)secs option:(UIViewAnimationOptions)option
{
    NSLog(@"moveTo Category. destination: %@ and duration %f", NSStringFromCGPoint(destination), secs);
    [UIView animateWithDuration:secs delay:0.0 options:option
                     animations:^{
                         self.frame = CGRectMake(destination.x,destination.y, self.frame.size.width, self.frame.size.height);
                         NSLog(@"self.frame: %@", NSStringFromCGRect(self.frame));
                     }
                     completion:^(BOOL finished){
                         NSLog(@"done");
                     }];
}
@end

动画代码:
[rewardAnimationButton moveTo:CGPointMake(100, 100) duration:5.0 option:0];

最佳答案

您是否关闭了 XIB 文件/ Storyboard 的自动布局?据说自动布局会接管 View 放置,并干扰动画。

您也可以尝试为按钮的中心而不是框架设置动画。如果 View 的变换不是标识,则 frame 属性未定义。

关于ios - animateWithDuration 不是动画 UIButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008263/

相关文章:

objective-c - 在 Objective-C 中是否可以获取字符串中正则表达式匹配的位置

objective-c - 使用 NSPredicate 过滤时返回非常困惑的结果

ios - 如何在不使用大量内存的情况下缩放过渡 UILabel?

ios - 在 UITextView 中的 attributeText 中使用 html 时删除控制字符(回车、格式化?等)

ios - 如何在 iOS 应用程序中停止 captureOutput

iphone - iphone 中的 UIButton 事件

ios - 核心动画在不是 Root View Controller 时不起作用

cocoa - 从一个 View 滑动到另一个 View

ios - 对象没有被添加到 NSMutableArray

javascript - 文本选择事件结束?