5

UIViewをページの4分の1上にスライドさせて、その下にある別のビューを表示し(オプションを表示するため)、次に下にスライドしてそれらのオプションをカバーしようとしています。私は執拗に検索しましたが、探しているものが見つからないようです。画面の上面図を維持したいので、モーダルビューを使用したくありません。以下のコードでは、私はそれをある程度機能させています。トップレベルは上にスライドしますが、その後完全に消えます(フェードアウトします)。

どんな助けでも大歓迎です!

ありがとう。

HomeOptionsViewController *homeOptionsViewController  = [[HomeOptionsViewController  alloc] 
                      initWithNibName:@"HomeOptionsViewController" 
                      bundle:nil];
// get the view that's currently showing
UIView *currentView = self.view;
// get the the underlying UIWindow, or the view containing the current view
UIView *theWindow = [currentView superview];

UIView *newView = homeOptionsViewController.view; 
//newView.frame = CGRectMake(0,300, 320,140);
    newView.frame = CGRectMake(0,-10, 320,140);
// remove the current view and replace with myView1
//---[currentView removeFromSuperview];
[theWindow addSubview:newView];

theWindow.frame = CGRectMake(0,-110,320,200);

newView.frame = theWindow.bounds;
// set up an animation for the transition between the views

CATransition *animation = [CATransition animation];
[animation setDuration:0.5];
[animation setType:kCATransitionPush];
[animation setSubtype:kCATransitionFromTop];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
//[theWindow setFrame:CGRectMake(0,200,320,300)];
[[theWindow layer] addAnimation:animation forKey:@"SwitchToView1"];
4

1 に答える 1

3

UIView標準のアニメーションを使用していない理由は何ですか?CATransitionsは、あるビューから別のビューへの遷移であると想定されているため、ビューを完全に変更します。

このようなことを試しましたか?画面の下部からスライドさせたいビューを追加してから、変化する両方のフレームをアニメーション化します。スライドアップ効果を生み出します。

newView.frame = CGRectMake(0,416,320,140);
[theWindow addSubview:newView];
[UIView beginAnimations:@"SwitchToView1" context:nil];
[UIView setAnimationDuration:0.5];
theWindow.frame = CGRectOffset(theWindow.frame, 0, -140);
newView.frame = CGRectOffset(newView.frame, 0, -140);
[UIView commitAnimations];
于 2011-08-31T15:15:48.007 に答える