3

----window1----- ----window2----- 誰かがこのシナリオで私を助けることができますか?

*タップすると、スライドがUIViewを開き、タップされたボタンが左側にあるボタンがあります。

※このボタンを再度タップするとUIViewがスライドバックします。

4

3 に答える 3

5

あなたが説明することは簡単です。右からスライドインするビューを引き出し (「drawerView」) と呼びましょう。ドロワー ビューをビュー コントローラーのメイン ビューの子ビューとして設定します。

その「引き出し」ビューをコンテナ ビューにします。その中に欲しいものをすべて入れてください。(テキスト ビュー、ボタンなど) また、このビュー内にボタンを配置します。そのボタンをView Controllerのアクション「slideDrawer」に接続します。

次に、"clips subviews" が false であることを確認し、左矢印キーでボタンをドロワー ビューの左端から離します。IB では消えますが、心配しないでください。IB は、実行中のプログラムのように「クリップ サブビュー」フラグを尊重しません。

drawerView へのアウトレットを作成し、それをコードにリンクします。

ドロワー ビューが思い通りに見えるようになったら、「サイズ インスペクター」で x 座標に注意してください。その値をkVisibleXとしましょう。次に、そのビューを画面外になるまで右にドラッグします。ボタンは IB では表示されませんが、実行時にウィンドウの端にのみ表示されます。(最初の画像に表示されているように)

オフスクリーンにあるときのドロワー ビューの x 座標に注意してください。その値をkOffscreenXとしましょう。

ブール型のインスタンス変数「drawerIsShowing」をビュー コントローラーに追加します。

ここで、IBAction メソッドの slideDrawer を記述します。

- (IBAction) slideDrawer: (id) sender;

そのメソッドで、drawerIsShowing をチェックして、ドロワーが現在表示されているかどうかを確認します。その場合は、画面外にスライドさせます。そうでない場合は、画面上でスライドします。

- (IBAction) slideDrawer: (id) sender;
{
  CGFloat newX;
  if (drawerIsShowing)
    newX = kOffscreenX;
  else
    newX = kVisibleX;
  [UIView animateWithDuration: .25
  animations: 
  ^{
    CGRect drawerFrame = drawerView.frame;
    drawerFrame.origin.x = newX;
    drawerView.frame = drawerFrame;
  }
drawerIsShowing = !drawerIsShowing;
}
于 2012-06-11T00:33:58.840 に答える
0

BOOL を宣言して、ビューが非表示かどうかを確認します。

.h で

BOOL _isContentVisible;

.m

-(IBAction)showHideContentView:(id)sender
{
    //BOOL isContentVisible= CGRectIntersectsRect(self.view.bounds, _sideContentScrollView.frame);

    [UIView animateWithDuration:1.0f
                          delay:0
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         //hide if visible else show
                         if (_isContentVisible) { // Hide
                             _isContentVisible = NO;
                             [_sideContentView setFrame:CGRectMake(-320, 0, 360, 748)];// 40 is assumed to button size
                         }
                         else { // Show
                             _isContentVisible = YES;
                             [_sideContentView setFrame:CGRectMake(0, 0, 360, 748)];
                         }
                     }
                     completion:^(BOOL finished) {
                         if (finished) {

                         }
                     }];
}
于 2013-08-12T12:29:37.947 に答える
0

ウィンドウ 1 を view1 に、ウィンドウ 2 を view2 にします。これらの各ビューに、ビューに必要なものを入力します。両方のビューに同じボタンを配置する場合は、同じテキストを持つ各ビューにボタンを配置します。ユーザーにとっては同じボタンです。ビュー 1 のボタンのアクションをビュー 2 に押します。ビュー 2 は、指定した内容で初期化されます。ビュー 2 でボタンを押すと、ビューがポップされ、ビュー 1 に戻ります...

それが役立つことを願っています。より具体的なサポートが必要な場合は、さらに情報を提供してください。さらにサポートできるはずです。

于 2012-06-07T17:21:24.653 に答える