2つのUIBarButtonItem
インスタンスをiOSユニバーサルアプリのUIToolbar
に配置します。最初の項目はツールバーの左端にあり、2番目の項目は中央にあります。ただし、これはInterface Builderでは実行できないようです 自動レイアウトはUIBarButtonItem
のサブクラスではないため、UIView
クラスの制約の強制をサポートしていないためです 。
左端に最初のボタンを配置し、右端に2番目のボタンを配置したくないことに注意してください-2番目のボタンを中央に配置する必要があります。また、3番目のボタンを使用して、等間隔で左、中央、右に揃える計画はありません。
この状況でストーリーボードにそのような制約を追加することはまだ可能ですか? Xcode 6ベータ5を使用します。
すべてをストーリーボードで実行できます。
オブジェクトライブラリでBar Button Item
を選択し、Toolbar
にドラッグします。右側にFlexible Space Bar Button Item
を追加します。 2番目のBar Button Item
を右側に追加します。次に、右側に2番目のFlexible Space Bar Button Item
を追加します。
Interface Builderでは、結果は次のようになります。
必要に応じて、Toolbar
の右端にFixed Space Bar Button Item
を追加して、2番目のBar Button Item
が確実に中央に配置されるようにすることができます。
ユーザーlxtは、同様の質問 here に対する答えとして、この別の例を示します。
編集:先に進む前に、UIToolbarに適切な制約があることを確認してください!
プログラムでこれを行うことができます
UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithTitle:@"item1" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithTitle:@"item2" style:UIBarButtonItemStylePlain target:self action:nil];
UIBarButtonItem *item3 = [[UIBarButtonItem alloc] initWithTitle:@"item3" style:UIBarButtonItemStylePlain target:self action:nil];
self.toolbarItems = [NSArray arrayWithObjects: item1, flexible, item2, flexible, item3, nil];
詳細を知りたい場合は、このリンクをチェックしてください
私はあなたが柔軟なバーボタンスペースアイテムを試してみるべきであると思うし、もっと控えめに言って私はリンクを共有しているので、それを見てこれがあなたを助けるかもしれない
ツールバーを追加するコード:
ここで、固定幅は可変です。したがって、2番目のボタンを中央に保持するために、必要な限りそれを保持できます。
UIBarButtonItem *fixedItemSpaceWidth = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
fixedItemSpaceWidth.width = 200.0f; // or whatever you want
UIBarButtonItem *doneBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(doneButtonAction:)];
UIBarButtonItem *cancelBarButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelButtonAction:)];
// Initialise toolabr
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height-44, 320, 44)];
//toolbar.barStyle = UIBarStyleBlack;
toolbar.items = [NSArray arrayWithObjects:cancelBarButton,fixedItemSpaceWidth,doneBarButton, nil];
[self.view addSubview:toolbar];