Home > 移动互联, 语言编程 > iOS开发之UIToolbar和UINavigationBar的UIBarButtonItem的距离调整

iOS开发之UIToolbar和UINavigationBar的UIBarButtonItem的距离调整

ios开发过程中,往UIToolbar和UINavigationBar中添加的多个UIBarButton距离通常是固定不可以调整的,
比如在UINavigationBar的右侧添加两个以上UIBarButton时,两个UIBarButton加上中间的空白占据了和大一部分的空间,
因而在开发iPhone应用程序时,开发者通常使用UISegmentedControl来替代使用两个button。

其实如果利用一下UIToolbar的一些特性就可以实现对的UIBarButton的间距调整,方法如下:
1.定义一个UIToolbar来存放者两个button
2.在两个Button之间添加一个UIBarButtonSystemItemFlexibleSpace类型的button
3.调整UIToolbar的宽度,这时就可以直接调整两个button之间的空白宽度了
4.将UIToolbar添加到Navigationbar中去即可


其中的第4步,采用早期ios4时候添加多个UIBarButton到UIToolbar和UINavigationBar的方法即可

实现代码如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//button1
UIBarButtonItem *button1 = [[UIBarButtonItem alloc] initWithTitle:@"Button1" 
                                                                  style:UIBarButtonItemStyleBordered
                                                                  target:nil
                                                                  action:nil];
                                                                  //button1
UIBarButtonItem *button2 = [[UIBarButtonItem alloc] initWithTitle:@"Button2" 
                                                                  style:UIBarButtonItemStyleBordered
                                                                  target:nil
                                                                  action:nil];
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace 
                                                                  target:nil
                                                                  action:nil];
//初始化toolbar                                                                  
UIToolbar *rightToolbar = [[UIToolbar alloc]init];
rightToolbar.items = [NSArray arrayWithObjects:button1,space,button2,nil];
 
//使button的tint色与导航条一致
rightToolbar.tintColor = self.navigationController.navigationBar.tintColor;
//调整宽度使button间距缩小
rightToolbar.frame = CGRectMake(220, 0, 101, 44);
 
//移除背景,用于添加到UIToolbar或UINavigationBar中
rightToolbar.backgroundColor = [UIColor clearColor];
for (UIView *view in [rightToolbar subviews]) {
	if ([view isKindOfClass:[UIImageView class]]) {
		[view removeFromSuperview];
	}
}
//添加到navigationbar中
[self.navigationController.visibleViewController.navigationController.navigationBar addSubview:rightToolbar];
Categories: 移动互联, 语言编程 Tags:
  1. October 23rd, 2012 at 16:16 | #1

    Oracle与CUUG共同举办–Oracle高级技术沙龙
    10月28日 北京 《王的盛宴-容灾技术大PK》将展示当前国际上流行的多种容灾软件的特点和应用范围,包括了oracle的GoldenGate、quest公司的shareplex、DSG的realsync以及九桥的DDS软件等

  2. November 18th, 2012 at 17:00 | #2

    挺不错的。学习了!

  1. No trackbacks yet.