2011-08-11 8 views
0

UIViewControllerからプログラムの下のツールバーに2 UIBarButtonItemを追加しようとしています。今はボタンを作成してNSArrayに追加してから[self setToolbarItems:buttonArray animated:YES]を呼び出しています。これにより、ボタンをツールバーの左下隅に追加します。私がしたいのは、ツールバーの左下に1つのボタンを追加し、右下にもう1つのボタンを追加することです。これをどうやってやりますか?setToolbarItemsを使用してレイアウトを制御するにはどうすればよいですか?

答えて

4

あなたtoolBarItemsはそのようなものになります。それは、iOSのように見えます

enter image description here

0

ボタンの間にUIBarButtonSystemItemFlexibleSpaceという名前のシステムバーボタンアイテムを追加できます。それは両側にそれらをプッシュします。

+0

私は最初と最後のアイテムにそのようなアイテムがあり、iOSは回転のツールバーアイテムのレイアウトを更新しません。 – Carl

2

あなたは手動で上のwidthプロパティを設定することで間隔を制御したい場合は、バーのボタンシステム項目UIBarButtonSystemItemFixedSpaceを使用することができますバーボタンシステム項目UIBarButtonSystemItemFlexibleSpace

UIBarButtonItem *leftButton; // set that 
UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 
UIBarButtonItem *rightButton; // set that 

NSArray *items = [NSArray arrayWithObjects:leftButton, flexibleSpace, rightButton, nil]; 
[toolbar setItems:items]; 

[flexibleSpace release]; 
// release the other two if necessary 

を使用する必要があります。

+0

最初と最後のアイテムにこのようなアイテムがあり、iOSは回転 – Carl

0

が上のツールバーのレイアウトをリフレッシュしません:

UIBarButtonItem *firstButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemTrash target:self action:@selector(someSelector)]; 
UIBarButtonItem *secondButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:@selector(someSelector)]; 

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; 

self.toolbarItems = [NSArray arrayWithObjects:firstButton, flexibleSpace, secondButton,nil]; 

[firstButton release], [secondButton release], [flexibleSpace release]; 

これは、あなたにそのような何かを与えますツールバー項目がストーリーボードで定義されるのではなくコードを使用して追加された場合、デバイスの回転。

解決策は、viewWillTransitionハンドラを追加し、VCのtoolbaritemsをnilに設定し、次に希望するバーボタン項目に戻すことです。

// method within a UIViewController class 

// set to nil so that iOS places buttons correctly on a rotation 
tools = ... // an [UIBarButtonItem] 
toolbarItems = nil 
setToolbarItems(tools, animated: false) 

あなたのツールバーには、[FlexibleSpace] [UIBarButtonItem] [FlexibleSpaceあった場合は、デバイスを回転させたときに、このハンドラはそのツールバーの中央にBarButtonItemを続けるだろう。

関連する問題