0

iPhoneで検索をタップしたときのように、全画面表示ではなくviewControllerのようなものを実装する方法を知っている人はいますか?ユーザーが上にスワイプすると、viewController(半分の高さ)が表示されるようにしたいと思います。セグエなし!! 古いビューコントローラーも同時に見せてほしいです。前もって感謝します

4

3 に答える 3

1

単純なものであれば、下部のすぐ下にを追加UIViewします。次に、[検索]などを押したときに、アニメーションブロックを使用してそれを上にアニメーション化します。UIViewControllerUIView

- (IBAction)btnTouch:(id)sender
{
        [UIView animateWithDuration:0.3
                              delay:0.0
                            options: UIViewAnimationCurveEaseInOut
                         animations:^{

                              //bring searchView up
                             _searchView.transform = CGAffineTransformMakeTranslation(0, -80);

                         }
                         completion:^(BOOL finished){

                         }

         ];
}

次に、完了したら、代わりにこの行で同じアニメーションブロックを使用して、ビューを元の位置に戻します。

_searchView.transform = CGAffineTransformMakeTranslation(0, 0);
于 2012-12-26T23:58:15.460 に答える
1

プロジェクト全体にこのタイプの機能を追加します。ウィンドウにQRViewを追加して、ユーザーがプロジェクトの任意のビューからビューを上にスワイプできるようにします...

私のコードの例を参照してください。

UISwipeGestureRecognizer次のように表示したい2番目のビューにを設定するだけです...

 CATransition *animation = [CATransition animation];
    [animation setDelegate:self];   
    [animation setType:kCATransitionFade];
    [animation setDuration:0.5];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:
                                  kCAMediaTimingFunctionEaseInEaseOut]];
    [[self.view layer] addAnimation:animation forKey:kAnimationKey];
    UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(addCustomBottomBar)] autorelease];
    swipeGesture.numberOfTouchesRequired = 1;
    swipeGesture.direction = (UISwipeGestureRecognizerDirectionDown);
    [yourViewController.view addGestureRecognizer:swipeGesture];/// use your view name here, its depends on your requirement
    UISwipeGestureRecognizer *swipeGestureTop = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(addCustomBottomBar)] autorelease];
    swipeGestureTop.numberOfTouchesRequired = 1;
    swipeGestureTop.direction = (UISwipeGestureRecognizerDirectionUp);

    [yourViewController.view addGestureRecognizer:swipeGestureTop];

ビューを上にスワイプすると、この次のメソッドが呼び出されます。

BOOLまた、名前の付いた変数を1つ追加し、メソッドisViewPopで設定NO します。viewDidLoad:

-(void)addCustomBottomBar{

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:self.window cache:YES];

    if (isqrcodepop) {
        isViewPop=NO;

        yourViewController.view.frame=CGRectMake(0, 430, 320, 70);
    }
    else{
        isViewPop=YES;

        yourViewController.view.frame=CGRectMake(0, 210, 320, 270);
        [self.view bringSubviewToFront:yourViewController.view];
    }
    [UIView commitAnimations];
}

この回答がお役に立てば幸いです...

于 2012-12-27T05:23:05.183 に答える
0

バックグラウンドビューコントローラー[self presentViewController:vc animated:YES completion:nil];を使用して、フロントビューコントローラーのフレームを画面の半分に設定することができます。このように、正面図の下半分は透明であるため、背景ビューコントローラは引き続き表示されます。

于 2012-12-26T23:49:03.527 に答える