2009-03-02 30 views
101

Tôi có ba UIBarButtonItem được tạo như sau. Họ sắp xếp trái và tôi muốn căn giữa để không có một khoảng trống ở phía bên phải. Tôi không thấy thuộc tính căn chỉnh trên UIToolBar. Có cách nào khác để thực hiện việc này không?Căn chỉnh các mặt hàng 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]; 

Trả lời

244

Thêm hai mục UIBarButtonSystemItemFlexibleSpace vào thanh công cụ của bạn, bên trái và bên phải của mục của bạn

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

Thêm những như bạn sẽ bất kỳ mục thanh công cụ khác sẽ phân phối không gian đồng đều giữa hai người họ.

+24

Không có lý do thực sự để làm cho nhiều không gian linh hoạt. Bạn có thể thêm cùng một đối tượng không gian linh hoạt vào thanh công cụ của bạn nhiều lần nếu bạn cần nhiều hơn một. – mmc

+0

mmc là chính xác. Trong thực tế, nó có lẽ sẽ là hoàn toàn hợp lý để làm cho một singleton linh hoạt và tái sử dụng nó trong suốt sản phẩm của bạn. Tôi đã nghe nó tuyên bố rằng đây là việc sử dụng ban đầu thật sự của người độc thân: không phải để thực thi các quy tắc của chương trình, nhưng để giảm chi phí. – Amagrammer

+0

Cập nhật mã để sử dụng một phiên bản của không gian linh hoạt – nduplessis

6

Trong Xamarin iOS liên kết

Bên phải:

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

Center Aligned:

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

Đây không phải là chủ đề. Chúng ta đang nói về iOS thuần túy ở đây. – jturolla

+4

Mục tiêu của MonoTouch là gì. –

+2

Câu hỏi C mục tiêu không phải là MonoTouch/C# –

25

này cũng có thể được thực hiện ngay từ một kịch bản này.

Chỉ cần kéo và thả các mục trong thanh công cụ và biến một số mục đó thành không gian linh hoạt hoặc cố định để có được hiệu ứng mong muốn. Xem hai ví dụ dưới đây.

Evenly spaced

Centered

+0

Tôi thích sử dụng bảng phân cảnh để quản lý giao diện người dùng của mình. – AechoLiu

2

phiên bản 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] 
Các vấn đề liên quan