0

という名前のUIViewControllerがありMainViewControllerます。SingleSearchViewフレームです。MainViewControllerのサブビューであるという名前のUIViewもあります。

そして、これsingleSearchViewをMainViewControllerに追加します。

self.singleSearchView = [[SearchView alloc] initWithFrame:CGRectMake(0, -480, 320, 480)];
[self.view addSubview:singleSearchView];

次のアニメーションを「切り替え」ようとするsingleSearchViewと、タッチ操作がブロックされます。singleSearchView

[UIView beginAnimations:@"searchAnimation" context:nil];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:1.0f]; 
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.singleSearchView cache:YES];
[self.view setFrame:CGRectMake(0, 480, 320, 480)];    
[UIView commitAnimations];

私もこの方法を試しました:

[UIView animateWithDuration:1.5 delay:0 
                 options:UIViewAnimationOptionAllowUserInteraction 
                     animations:^{
                         [self.view setFrame:CGRectMake(0, 480, 320, 480)];  
                     }
                     completion:nil];

ありがとう

4

3 に答える 3

3

この答えから別の質問へ

UIViewのブロックアニメーションはデフォルトでユーザーの操作をブロックします。これを回避するには、オプションの1つとしてUIViewAnimationOptionAllowUserInteractionを渡す必要があります。うまくいけば、他の誰かがこの情報を使用することもできます。

于 2011-08-03T12:49:00.627 に答える
0

self.viewを動かそうとしないでください。self.viewプロパティは、UIVIewControll階層で特別です。サブビューを作成し、代わりにこれをアニメーション化する必要があります...

于 2011-08-03T12:54:44.353 に答える
0

理解した!

CATransition* trans = [CATransition animation];
[trans setType:kCATransitionPush];
[trans setDuration:0.5];
[trans setSubtype:kCATransitionFromBottom];

[self.singleSearchView setFrame:CGRectMake(0, 0, 320, 480)];

CALayer *layer = self.view.layer;
[layer addAnimation:trans forKey:@"Transition"];
于 2011-08-03T13:43:13.313 に答える