0

ボタンを押すと別のツールバーが表示される (現在のツールバーの上にスライドする) ボタンを使用して、このようなツールバーを作成するにはどうすればよいですか? これは、Apple の iPhoto アプリケーションのスクリーンショットです。

http://i.stack.imgur.com/dKYZq.png

4

1 に答える 1

1

私はこれを次のように動作させました(免責事項:これはHIGに違反する可能性があります!):

  1. 新しい基本的な UIViewController を追加しました。
  2. UIViewController のビューに UIToolbar を追加しました。この UIToolbar を、「BaseToolbar」という名前の UIViewController のプロパティに接続しました。
  3. 「BaseToolbar」に、ボタンを追加しました。このボタンを、UIViewController の「AddPressed:」という IBAction に接続しました。
  4. UIViewController の xib に UIToolbar を追加しましたが、UIViewController のビューには追加しませんでした。デザイン面に追加しただけです。この UIToolbar を、「SecondToolbar」という名前の UIViewController のプロパティに接続しました。
  5. 「SecondToolbar」に、ボタンを追加しました。このボタンを、UIViewController の「TrashPressed:」という IBAction に接続しました。

次のコードを使用しました。

- (IBAction)AddPressed:(id)sender {
    CGRect secondCurrRect = [[self SecondToolbar] frame];
    [[self SecondToolbar] setFrame:CGRectMake(0, -1 * secondCurrRect.size.height, secondCurrRect.size.width, secondCurrRect.size.height)];
    [[self view] addSubview:[self SecondToolbar]];
    [[self view] bringSubviewToFront:[self SecondToolbar]];
    [UIView animateWithDuration:1.0
                     animations:^(void){
                         [[self SecondToolbar] setFrame:CGRectMake(0, 0, secondCurrRect.size.width, secondCurrRect.size.height)];
                     }];
}
- (IBAction)TrashPressed:(id)sender {
    CGRect secondCurrRect = [[self SecondToolbar] frame];
    [UIView animateWithDuration:1.0
                     animations:^(void){
                         [[self SecondToolbar] setFrame:CGRectMake(0, -1 * secondCurrRect.size.height, secondCurrRect.size.width, secondCurrRect.size.height)];
                     }
                     completion:^(BOOL finished) {
                         [[self SecondToolbar] removeFromSuperview];
                     }];
}

そのコードを使用すると、新しい UIToolbarが「ベース」UIToolbar の上でオン/オフにスライドします。


編集・更新

別の戦術を試してみましょう。 (これはUIToolbar、設計時に xib にオブジェクトを追加していることを前提としています)

  1. ツールバー #1 (常に画面に表示されているもの) をビューの上部に追加し、好きな位置に配置します。
  2. ツールバー #2 (スライドするもの) をツールバー #1 の下に追加し、必要なボタンで構築します。
  3. 次のコード行を-(void)viewDidLoadメソッドに挿入します (これにより、2 番目のツールバーが画面外に移動します)。

[[self Toolbar2] setFrame:
    CGRectMake(0,                                    // origin.x
               -[[self Toolbar2] frame].size.height, // origin.y
               [[self Toolbar2] frame].size.width,   // size.width (remains the same)
               [[self Toolbar2] frame].size.height)  // size.height (remains the same)
];

addSubview:次に、上記のコードを使用しますが、との呼び出しをスキップしますremoveFromSuperview

それは今意味がありますか?

于 2012-04-30T18:01:31.810 に答える