2010-05-02 75 views
3

我需要創建一個具有兩個UIBarButtonItems的UIToolbar。第一個按鈕必須居中,第二個項目必須右對齊。UIToolbar UIBarButtonItem對齊問題

我理解並使用靈活的間距,當我需要平衡整個UIToolbar的按鈕時,它的工作效果很好,但只有兩個按鈕,我似乎無法完美地居中中間按鈕。我甚至有

NSArray *items = [[NSArray alloc] initWithObjects:fixed, flex, center_button, flex, right_button, nil]; 

初始化view.toolbarItems陣列,並設置fixed.width = right_button.width ......但儘管如此,center_button永遠不會完全集中。

+0

請務必使用工具包進行標記,以便人們可以通過標籤隱藏與其無關的問題。 – doublep 2010-05-02 18:41:34

回答

9

我最近有同樣的問題,並通過創建一種假的UIBarButtonItem來解決它。在得到右對齊的關鍵是左右兩個欄按鈕的possibleTitles屬性設置爲相同的值,例如:

[right_button setPossibleTitles:[NSSet setWithObject:@"Abc"]]; 

// Create this fake (plain) button item on the left, to correct the alignment. 
UIBarButtonItem *fake = [[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease]; 
[fake setEnabled:NO]; 
[fake setPossibleTitles:right_button.possibleTitles]; 

// The array for your toolbar items 
NSArray *items = [[NSArray alloc] initWithObjects:fake, flex, center_button, flex, right_button, nil]; 

遲到的回答...我希望這仍然可以提供幫助。

+0

我現在無法測試這個 - 但很棒!我會盡快嘗試一次,我有機會。 – 2011-06-14 21:44:05

+0

謝謝!使用possibleTitles允許我將我的中間播放按鈕置於一組三個按鈕中。我只是將外部按鈕設置爲相同的可能標題。 – 2011-08-18 17:08:37

0

聽起來好像你的工具欄不是整個屏幕的寬度,或者你的center_button沒有在它的框架中居中。你有沒有試過設置center_button.imageInsets

+0

事實上,UIToolbar是UINavigationController的一部分,並在整個屏幕上延伸。中心按鈕可以是任何UIBarButtonSystem項目,如果我有item,flex,item,flex,item,那麼這些項目就可以工作得很好。只有當我想在最左角找到一個空白點時,問題纔會體現出來。 – 2010-06-19 18:39:09

1

問題是,UIBarButtonItem的寬度屬性似乎總是​​爲零。 (我認爲這是因爲零被系統用作一個標誌,使它成爲「合適的」寬度,而flex空間也是一樣)。你可能要做的是在你的右鍵中使用一個圖像方式,你知道它的寬度將是什麼),並用一個「左鍵」替換你的固定空間,使用與右鍵相同大小的透明圖像。