對於想要客製化Navigation bar的初學者來說,調整Item的尺寸以及item之間的間距並不是很明確的事情,直接使用UIBarButtonItem初始化方法無法調整寬度,雖然UIBarButtonItem的特性裡面可以設定width,但那對於navigation上的item而言是無效的,僅對ToolBar的item才有效果,以下提供簡單的做法。
如果你能印出UIBarButtonItem的寬度,你可能會發現它裡面的圖片和UIBarButtonItem本身的寬度並不剛好,UIBarButtonItem的寬度更寬,多個UIBarButtonItem放在一起的時候可能會看起來太寬,這時有一個比較單純的處理方法。
初始化一個UIButton,將寬高設定好,然後初始化一個UIView,將他的寬高設定成和按鈕一樣,然後把按鈕加進這個view內,再使用UIBarButtonItem的initWithCustomView:方法去初始化即可,參考如下範例:
所以你可以設定這樣的NSArray:
另外我需要提醒一件事情,即使你設定寬高為20,但實際上這樣的效果只是製作一個UIBarButtonItem的寬高和其內部圖片一樣尺寸(fit)的UIBarButtonItem,實際的寬高依然不是20。
如果你能印出UIBarButtonItem的寬度,你可能會發現它裡面的圖片和UIBarButtonItem本身的寬度並不剛好,UIBarButtonItem的寬度更寬,多個UIBarButtonItem放在一起的時候可能會看起來太寬,這時有一個比較單純的處理方法。
初始化一個UIButton,將寬高設定好,然後初始化一個UIView,將他的寬高設定成和按鈕一樣,然後把按鈕加進這個view內,再使用UIBarButtonItem的initWithCustomView:方法去初始化即可,參考如下範例:
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = view.bounds;
// Setup button ....
[view addSubview:button];
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:view];
再來,如果要設定右側item之間的寬度呢?UIBarButtonItem *navigationSeperator = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
navigationSeperator.width = 10;
[buttonItems addObject:navigationSeperator];
可以透過設定UIBarButtonSystemItemFixedSpace這個item,並且設定他的width來達成,值得注意的是,這個width是有效果的。所以你可以設定這樣的NSArray:
NSArray *items = @[firstItem, navigationSeperator, secondItem];
注意到navigationSeperator是放在兩個item的中間嗎?然後設定他為右方的item:[self.navigationItem setRightBarButtonItems:items animated:YES];
這樣你就可以調整item的寬度和彼此的間距了。另外我需要提醒一件事情,即使你設定寬高為20,但實際上這樣的效果只是製作一個UIBarButtonItem的寬高和其內部圖片一樣尺寸(fit)的UIBarButtonItem,實際的寬高依然不是20。
留言
張貼留言