【问题标题】:UIView beginAnimations fails on selectorUIView beginAnimations 在选择器上失败
【发布时间】:2012-01-11 08:58:32
【问题描述】:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelay:4];
[UIView setAnimationDuration:5];
navigation.frame = CGRectOffset(navigation.frame, 0, 430);
[UIView commitAnimations];

在 viewDidLoad 函数上手动调用或点击按钮时,上面的代码块可以正常工作。但是当我尝试在下面的选择器函数中调用该块时,动画不起作用。对象跳转到位置。是什么原因造成的?

if ([delegate respondsToSelector:@selector(carouselDidEndScrollingAnimation:)])
{
    [delegate carouselDidEndScrollingAnimation:self];
}


- (void) carouselDidEndScrollingAnimation:(iCarousel *)carousel{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:5];
    navigation.frame = CGRectOffset(navigation.frame, 0, 430);
    [UIView commitAnimations];
}

icarousel github

【问题讨论】:

    标签: objective-c ios ipad


    【解决方案1】:

    仍然不知道真正的问题,但是

    [self performSelector:@selector(makeAnim) withObject:nil afterDelay:0.0001];
    

    解决了我的问题。

    希望能帮助任何人。

    仍然需要更好的解决方案。

    【讨论】:

    • 我想你会发现延迟为 0 可能也同样有效。代码所做的是将效果延迟到下一个屏幕更新周期(约 1/60 秒),这可能会阻止它受到正在进行的任何其他动画的干扰。
    猜你喜欢
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2012-09-22
    • 1970-01-01
    • 2017-07-02
    • 2012-04-05
    • 1970-01-01
    • 2011-07-10
    相关资源
    最近更新 更多