UIToolBar 항목 정렬


112

UIBarButtonItem다음과 같이 세 가지를 만들었습니다. 그들은 왼쪽으로 정렬되고 오른쪽에 간격이 없도록 가운데 정렬하고 싶습니다. 에서 정렬 속성이 표시되지 않습니다 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

도구 모음의 항목 왼쪽과 오른쪽에 두 개의 UIBarButtonSystemItemFlexibleSpace 항목을 추가합니다.

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

다른 도구 모음 항목과 마찬가지로 이러한 항목을 추가하면 둘 사이에 공간이 균등하게 분산됩니다.


25
여러 개의 유연한 공간을 만들 실제 이유가 없습니다. 둘 이상이 필요한 경우 동일한 여러 개의 가변 공간 개체를 도구 모음에 여러 번 추가 할 수 있습니다.
mmc

mmc가 정확합니다. 사실, singleton flexibleSpace를 만들고 제품 전체에서 재사용하는 것이 아마도 완벽하게 합리적 일 것입니다. 나는 이것이 싱글 톤의 진정한 원래 사용이라고 주장했다고 ​​들었습니다. 프로그램 규칙을 시행하는 것이 아니라 오버 헤드를 줄이기위한 것입니다.
Amagrammer

2
릴리스 호출을 업데이트하는 것을 잊었습니다. [flexibleSpace 릴리스]를 읽어야합니다.
Daniel Hepper 2009

예, 죄송합니다. [flexibleSpace 릴리스] 대신 [flexibleSpaceLeft 릴리스]를 읽었습니다. 오타 수정
nduplessis 2009

30

이 작업은 스토리 보드에서 바로 수행 할 수도 있습니다.

툴바에서 항목을 드래그 앤 드롭하고 일부를 유연하거나 고정 된 공간으로 전환하여 원하는 효과를 얻으십시오. 아래의 두 가지 예를 참조하십시오.

균일 한 간격

중심


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

4
이것이 MonoTouch가 목표로하는 것입니다.
Herman Schoenfeld

2
목표 C 질문하지 MonoTouch / C 번호
최대 MacLeod는

6
@MaxMacLeod : obj-c 태그가 아니라 iPhone 태그입니다. 따라서 내 대답은 유효합니다. c #과 obj-c를 대조하는 것도 좋습니다. 분명히, C #은 모든면에서 현대적이고, 더 얇고, 더 좋고, 빠르고, 우수합니다.
Herman Schoenfeld

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.