web-dev-qa-db-ja.com

iOSユニバーサルアプリのUIToolbarでUIBarButtonItemを整列する方法は?

2つのUIBarButtonItemインスタンスをiOSユニバーサルアプリのUIToolbarに配置します。最初の項目はツールバーの左端にあり、2番目の項目は中央にあります。ただし、これはInterface Builderでは実行できないようです 自動レイアウトはUIBarButtonItemのサブクラスではないため、UIViewクラスの制約の強制をサポートしていないためです

左端に最初のボタンを配置し、右端に2番目のボタンを配置したくないことに注意してください-2番目のボタンを中央に配置する必要があります。また、3番目のボタンを使用して、等間隔で左、中央、右に揃える計画はありません。

この状況でストーリーボードにそのような制約を追加することはまだ可能ですか? Xcode 6ベータ5を使用します。

23
Blaszard

すべてをストーリーボードで実行できます。

オブジェクトライブラリでBar Button Itemを選択し、Toolbarにドラッグします。右側にFlexible Space Bar Button Itemを追加します。 2番目のBar Button Itemを右側に追加します。次に、右側に2番目のFlexible Space Bar Button Itemを追加します。

Interface Builderでは、結果は次のようになります。

enter image description here

必要に応じて、Toolbarの右端にFixed Space Bar Button Itemを追加して、2番目のBar Button Itemが確実に中央に配置されるようにすることができます。

ユーザーlxtは、同様の質問 here に対する答えとして、この別の例を示します。

編集:先に進む前に、UIToolbarに適切な制約があることを確認してください!

74
Imanou Petit

プログラムでこれを行うことができます

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];

詳細を知りたい場合は、このリンクをチェックしてください

IToolbarの右側にUIBarButtonItemを配置する方法?

6
Mohamad Chami

私はあなたが柔軟なバーボタンスペースアイテムを試してみるべきであると思うし、もっと控えめに言って私はリンクを共有しているので、それを見てこれがあなたを助けるかもしれない

IToolbarおよびFlexable/Fixedバーボタン項目

3
Arvind

ツールバーを追加するコード:

ここで、固定幅は可変です。したがって、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];
2
Chetan