Iphone 视图未设置动画

Iphone 视图未设置动画,iphone,objective-c,Iphone,Objective C,我正在使用此方法尝试向上移动视图,但未成功,以下是我的MainViewController实现文件中的代码: [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:0.5]; CGRect rect = self.view.frame; if (movedUp) { NSLog(@"should move Up"); rect.origin.y -= 50; rect.size.h

我正在使用此方法尝试向上移动视图,但未成功,以下是我的MainViewController实现文件中的代码:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];

CGRect rect = self.view.frame;
if (movedUp)
{
    NSLog(@"should move Up");
    rect.origin.y -= 50;
    rect.size.height += 300;
}
self.view.frame = rect ;

[UIView commitAnimations];
它没有出错,它打印出“应该向上移动”,所以我知道该方法执行正确

这是IB层次结构(我正在尝试移动突出显示的视图):

任何帮助都将不胜感激,我已经没有主意了


好的,在这里编辑我已经将问题隔离为其他问题,我现在使用以下代码:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:.5];

self.containerView.frame = CGRectMake(0, 0, 250, 50);

[UIView commitAnimations];
如果我在“-(void)viewDidLoad”中注入这段代码,它工作得很好

但是,如果在同一ViewController实现文件的不同函数中使用相同的代码,则该代码不起作用:

- (void)setViewMovedUp:(BOOL)movedUp {


        NSLog(@"test movedUp");
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:.5];

        self.containerView.frame = CGRectMake(0, 0, 250, 50);

        [UIView commitAnimations];



}
但是它仍然打印出“test moved up”,因此代码被执行,只是视图没有动画。

使用

[self.view setFrame:rect];
而不是

self.view.frame = rect ;
我认为动画将不会用于
self.view

使用

[self.view setFrame:rect];
而不是

self.view.frame = rect ;

我认为动画不会用于
self.view

尝试移动另一个视图,而不是主视图。
移动主视图可能有问题

如果可行,则向视图层次结构中添加一个视图,该视图将包含所有其他视图,并将其连接到IBOutlet


如果它不起作用,请评论我,我们将尝试找出答案…

尝试移动另一个视图,而不是主视图。
移动主视图可能有问题

如果可行,则向视图层次结构中添加一个视图,该视图将包含所有其他视图,并将其连接到IBOutlet

如果它不起作用,请评论我,我们将尝试找出答案…

浏览此链接 签入方法-(void)HandleSweepSignature:(UISweepGestureRecognitizer*)发送者通过此链接
签入方法-(void)HandleSweepSignature:(UISweepGestureRecognitizer*)发送方

Hmm,不幸的是它仍然没有向上移动,仍然打印“应该向上移动”消息而不是错误/警告:(Hmm,不幸的是它仍然没有向上移动,仍然打印“应该向上移动”消息而不是错误/警告:(何时调用此代码?在加载视图之前,动画不会工作。我在按下特定按钮后,将此代码作为MainViewController的一种方法调用。基本上,它是在按下按钮后执行的(日志的行为也是如此)。何时调用此代码?在加载视图之前,动画将无法工作。我在按下特定按钮后,将此代码作为MainViewController的一种方法调用。基本上,它是在按下按钮后执行的(日志的行为也是如此).ah,这很有趣。那么我该如何明确指定其他视图?您的意思是什么?您可以在视图控制器的.h文件中创建add
IBOutlet UIView*containerView;
行,并将其连接到视图层次结构中的某个视图(例如,主视图正下方的视图).嘿,Michael,我这样做了:创建了一个新的containerView插座并将其链接到IB中,将代码改为self.containerView.frame,而不是self.view.frame,但不幸的是,视图仍然没有移动,(尽管没有错误或警告)。也许这段代码是从非主线程执行的?你能解释一下这段代码是如何执行的以及何时执行的吗?也可以试着去掉动画-只需设置帧,看看它是否仍然不起作用。好吧,有趣的是,如果我将动画代码粘贴在“ViewDidLoad”下,它就可以正常工作,只要我用自己的方法粘贴相同的代码(setViewMovedUp)它只是打印日志,但不会像“ViewDidLoad”那样移动视图啊,这很有趣。那么我该如何明确指定其他视图?什么意思?您可以在视图控制器的.h文件中创建add
IBOutlet UIView*containerView;
行,并将其连接到视图层次结构中的某个视图(例如,主视图下的一个)。嘿,Michael,我这样做了:创建了一个新的containerView插座并在IB中链接它,将代码改为self.containerView wframe而不是self.view.frame,但不幸的是视图仍然没有移动(尽管没有错误或警告)。也许这段代码是从非主线程执行的?你能解释一下这段代码是如何执行的以及何时执行的吗?也可以试着去掉动画-只需设置帧,看看它是否仍然不起作用。好吧,有趣的是,如果我将动画代码粘贴在“ViewDidLoad”下,它就可以正常工作,只要我用自己的方法粘贴相同的代码(setViewMovedUp)它只打印日志,但不像“ViewDidLoad”那样移动视图