作者:zyl910
在iOS開發時,有時候需要在UIToolBar中增加UILabel等控制項。見過很多資料是以代碼方式完成此功能,不易維護。於是我進行了一番摸索,找到了xib/storyboard圖形介面下的處理辦法。
一、代碼方式
代碼方式是很多資料上提到的,關鍵是利用UIBarButtonItem的initWithCustomView方法來綁定UILabel控制項。代碼如下——
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(40.0f, 20.0f, 45.0f, 10.0f)]; myLabel.font=[UIFont systemFontOfSize:10]; myLabel.backgroundColor = [UIColor whiteColor]; myLabel.textAlignment=UITextAlignmentCenter; myLabel.text = @"aa";UIBarButtonItem *myButtonItem = [[UIBarButtonItem alloc]initWithCustomView:myLabel]; [buttons addObject: myButtonItem]; //添加文本
出自——
http://blog.csdn.net/light_jewel/article/details/7768045
UIToolBar 上面添加任意控制項
二、xib/storyboard圖形介面方式
在xib/storyboard圖形介面設計時,不能UILabel放置到UIToolBar中。若強行將UILabel拖曳到UIToolBar,會使UILabel放置在上層容器中,而不是UIToolBar中。
代碼方式不是可以用initWithCustomView嗎?按道理圖形介面下也能實現的,為什麼就不行呢?
我仔細檢查了UIToolBar、UIBarButtonItem的屬性面板,貌似沒辦法插入UILabel等控制項。
山窮水盡疑無路,柳暗花明又一村。我靈機一動,將UIView拖曳到UIToolBar,發現出現了插入符。一鬆手,發現UIToolBar中自動增加了一個UIBarButtonItem,其中便是剛才插入的UIView。哈哈,看看這就是initWithCustomView對應的圖形介面方法。
隨後在那個UIView中放置UILabel,果然成功——
運行後發現存在一個問題,UIView的背景色是白色的,與UIToolBar的藍色漸層背景不協調。該怎麼辦呢?
反覆嘗試修改UIBarButtonItem、UIView、UILabel的Alpha、Opaque等屬性,但總是無法解決背景不協調問題。
後來在偶然的嘗試中,發現神奇的解決辦法——就是將UIView的Background設為某種顏色(如藍色),然後再設回“Default”,UIView的背景便會消失。運行測試通過——
估計在放置UIView控制項時,雖然Background表面上是Default,但實際上它用的是White。這時通過重新設定屬性,才能使Background變回真正的Default。
總結一下操作步驟——
1. 將UIView拖曳到UIToolBar(UIToolBar中自動增加了一個UIBarButtonItem,其中便是剛才插入的UIView);
2. 將UILabel(或其他控制項)拖曳到剛才的UIView中;
3. 將剛才的UIView的Background設為某種顏色(如藍色);
4. 將剛才的UIView的Background設為Default。
4步輕鬆搞定。