ボタンを押すと別のツールバーが表示される (現在のツールバーの上にスライドする) ボタンを使用して、このようなツールバーを作成するにはどうすればよいですか? これは、Apple の iPhoto アプリケーションのスクリーンショットです。
1 に答える
1
私はこれを次のように動作させました(免責事項:これはHIGに違反する可能性があります!):
- 新しい基本的な UIViewController を追加しました。
- UIViewController のビューに UIToolbar を追加しました。この UIToolbar を、「BaseToolbar」という名前の UIViewController のプロパティに接続しました。
- 「BaseToolbar」に、ボタンを追加しました。このボタンを、UIViewController の「AddPressed:」という IBAction に接続しました。
- UIViewController の xib に UIToolbar を追加しましたが、UIViewController のビューには追加しませんでした。デザイン面に追加しただけです。この UIToolbar を、「SecondToolbar」という名前の UIViewController のプロパティに接続しました。
- 「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 (常に画面に表示されているもの) をビューの上部に追加し、好きな位置に配置します。
- ツールバー #2 (スライドするもの) をツールバー #1 の下に追加し、必要なボタンで構築します。
- 次のコード行を
-(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 に答える