2011-02-09 69 views
5

我試圖找出一個乾淨的方式,使UIToolbar只需要適應它所包含的項目一樣寬。有沒有辦法:調整UIToolbar以適應其項目?

  • 配置UIToolbar自動調整其寬度,因爲它的項目被改變?
  • 以編程方式確定物品所需的最小寬度,然後可用於設置UIToolbar的框架?

我一直沒能算出這個因項目而事實上,UIBarButtonItem s爲不UIView子類之間的間距。

回答

0

我剛剛檢查了文檔,看起來像UIBarButtonItems,即使它們不是UIView子類,它們也有一個屬性width。我沒有自己嘗試,但我認爲你可以對每個項目的寬度進行求和,包括靈活的項目,並獲得工具欄的寬度。 希望它有幫助! ;)

+4

我很確定寬度是0,除非明確設置。 – 2011-05-22 18:53:16

2

試圖從其他的答案一些建議,並沒有工作,除非我用自定義視圖後,或除非一切都裝,我終於到達了一個辦法是根據它的項目設置工具欄的寬度:

//Add bar items to toolbar first. 

UIView* v = toolbar.subviews.lastObject; 
float newWidth = v.frame.origin.x + v.frame.size.width; 

//Set toolbar width 

您需要覆蓋UIToolbar -setItems:或以其他方式檢測已更改的按鈕以自動調整大小。

我已將此功能包含在我的重構庫es_ios_utils中,用於通過多個按鈕設置導航項目的正確項目。在前面的鏈接中,請參閱UIToolbar +toolbarWithItems:UINavigationItem -setRightBarButtonItems

+0

「UIToolbar」沒有子視圖。 – Dmitry 2017-10-31 04:13:05

0

swift 3,4更新

我有一個barButtonItem與圖像啓動工具欄。我需要做的就是計算圖像的總寬度加上間隔(邊距)。

邊距默認爲11寬度。代碼將是:

let width: CGFloat = YourBarButtonItemList.reduce(0) {sofar, new in 
    if let image = new.image { 
     return sofar + image.size.width + 11 
    } else { 
     return sofar + ADefaultValueIfThisDoesntWork + 11 
    } 
} 
相關問題