Ios7 显示的ViewController忽略UIView动画

Ios7 显示的ViewController忽略UIView动画,ios7,uiviewanimation,presentviewcontroller,Ios7,Uiviewanimation,Presentviewcontroller,我有一个简单的动画,反复上下移动幻灯片。代码如下: CGRect frm_down = slider.frame; frm_down.origin.y += 50; [UIView animateWithDuration:0.7 delay:0.0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOpti

我有一个简单的动画,反复上下移动幻灯片。代码如下:

    CGRect frm_down = slider.frame;
    frm_down.origin.y += 50;

    [UIView animateWithDuration:0.7
                          delay:0.0
                        options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat
                     animations:^{
                         slider.frame = frm_down;
                     }
                     completion:NULL];
这是非常直截了当的,效果非常好;但是,当我呈现视图(self-presentViewController:animated:)时,动画不会发生

事实上,滑块会立即移动到较低的位置(好像它只调用动画一次,然后将其向下移动,但不向上移动)

我也试过:

CGRect frm_down = [[[slider layer] presentationLayer] frame]
这将使滑块保持在其原始位置,而不是向下移动一次,并且动画仍然不会发生


知道我错过了什么吗?谢谢

您的动画可以正常工作。我测试过了

您需要的是:

而不是使用:

self presentViewController:animated:
使用以下命令:

[self addChildViewController:<YOUR_VIEWCONTROLLER>];
[self.view addSubview:<YOUR_VIEWCONTROLER>.view];
[<YOUR_VIEWCONTROLER> didMoveToParentViewController:self];
当它进入视图时,它将设置动画


我事先把它当作一个测试。希望有帮助。

关于Swift:

override func viewDidAppear(_ animated: Bool) {
          super.viewDidAppear(true)

    var from_down =  self.view.frame
    from_down.origin.y += 50

    UIView.animate(withDuration: 0.2, delay: 0.0, options: .autoreverse, animations: {
        self.view.frame = from_down
        }, completion: nil)
}

很好!特别是将动画代码放在ViewDidDisplay中!谢谢你,伙计!
override func viewDidAppear(_ animated: Bool) {
          super.viewDidAppear(true)

    var from_down =  self.view.frame
    from_down.origin.y += 50

    UIView.animate(withDuration: 0.2, delay: 0.0, options: .autoreverse, animations: {
        self.view.frame = from_down
        }, completion: nil)
}