UIToolBarアイテムの整列


112

UIBarButtonItem以下のように3つ作成しました。左揃えで、中央に揃えて、右側に隙間が無いようにしたいです。にalignプロパティが表示されませんUIToolBar。これを達成する別の方法はありますか?

//create some buttons
UIBarButtonItem *aboutButton = [[UIBarButtonItem alloc] initWithTitle:@"About" style:UIBarButtonItemStyleBordered target:self action:@selector(showAbout:)];
[toolbar setItems:[NSArray arrayWithObjects:settingsButton,deleteButton,aboutButton,nil]];
//Add the toolbar as a subview to the navigation controller.
[self.navigationController.view addSubview:toolbar];

回答:


259

2つのUIBarButtonSystemItemFlexibleSpaceアイテムをツールバーのアイテムの左側と右側に追加します

UIBarButtonItem *flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:flexibleSpace, settingsButton,deleteButton,aboutButton, flexibleSpace, nil]];

他のツールバー項目と同じようにこれらを追加すると、2つのツールバー項目の間にスペースが均等に分散されます。


25
複数の柔軟なスペースを作る本当の理由はありません。複数必要な場合は、同じ複数のフレキシブルスペースオブジェクトをツールバーに複数回追加できます。
mmc

mmcは正しいです。実際、シングルトンのflexibleSpaceを作成し、製品全体で再利用することは、おそらく完全に合理的です。これがシングルトンの本来の本来の用途であると主張していると聞きました。プログラムルールを適用するためではなく、オーバーヘッドを削減するためです。
Amagrammer 2009

2
リリース呼び出しを更新するのを忘れました。[flexibleSpace release]を読んでください。
ダニエルヘッパー09

ええ、申し訳ありませんが、[flexibleSpace release]ではなく[flexibleSpaceLeft release]と表示されています。
タイプミスを

30

これは、ストーリーボードから直接行うこともできます。

ツールバーのアイテムをドラッグアンドドロップし、それらの一部をフレキシブルスペースまたは固定スペースにして、目的の効果を得るだけです。以下の2つの例を参照してください。

等間隔

中央揃え


8

Xamarin iOSの場合

右揃え:

yourBar.SetItems(new [] { new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace), yourButton }, false);

中央揃え:

var flexibleSpace = new UIBarButtonItem(UIBarButtonSystemItem.FlexibleSpace);
yourBar.SetItems(new [] { flexibleSpace, yourButton, flexibleSpace}, false);

5
これはトピックではありません。ここでは、純粋なiOSについて話しています。
jturolla 2013年

4
これがMonoTouchのターゲットです。
ハーマンシェーンフェルト2013

2
MonoTouch / C#ではなく目的Cの質問
Max MacLeod 2013

6
@MaxMacLeod:obj-cのタグは付いていません。iPhoneのタグが付いています。したがって、私の答えは有効です。また、c#とobj-cを対比するとよいでしょう。明らかに、c#はあらゆる点で現代的で、よりスリムで、より良く、より速く、優れています。
ハーマンシェーンフェルト2013

12
質問のコードがObjective-Cであったことは明らかだったかもしれませんが、この回答は役に立ちました。Googleでも上位の質問です。
jacob.toye 2013年

7

Swiftバージョン:

    let toolbar = UIToolbar(frame: CGRectMake(0, 0, viewController.view.frame.size.width, 35.0))
    let flexibleSpace = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.FlexibleSpace, target: viewController, action: nil)
    let button1 = UIBarButtonItem(title: "A", style: UIBarButtonItemStyle.Plain, target: viewController, action: foo)
    let button2 = UIBarButtonItem(title: "B", style: UIBarButtonItemStyle.Plain, target: viewController, action: bar)
    let button3 = UIBarButtonItem(title: "C", style: UIBarButtonItemStyle.Plain, target: viewController, action: blah)
    toolbar.items = [button1, flexibleSpace, button2, flexibleSpace, button3]
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.