调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距

我们发现,在设置navigationItem的leftBarButtonItem或rightBarButtonItem时,用CustomView初始化UIBarButtonItem,不论怎么设置CustomView的frame,添加到导航条上之后总是和屏幕边界有一定的间距(5pix),如何自由调整这个间距呢?

初始化一个用于控制间距的UIBarButtonItem实例negativeSpacer,并设置negativeSpacer的width属性的值,设为-5的时候,正好可以使按钮与屏幕边界值为0,以rightBarButtonItem情况为例

[plain] view plaincopy

  1. UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  2. /**
  3. *  设置frame只能控制按钮的大小
  4. */
  5. btn.frame= CGRectMake(0, 0, 40, 44);
  6. [btn addTarget:self action:@selector(buttonClicked) forControlEvents:UIControlEventTouchUpInside];
  7. UIBarButtonItem *btn_right = [[UIBarButtonItem alloc] initWithCustomView:btn];
  8. UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]
  9. initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
  10. target:nil action:nil];
  11. /**
  12. *  width为负数时,相当于btn向右移动width数值个像素,由于按钮本身和边界间距为5pix,所以width设为-5时,间距正好调整
  13. *  为0;width为正数时,正好相反,相当于往左移动width数值个像素
  14. */
  15. negativeSpacer.width = -5;
  16. self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:negativeSpacer, btn_right, nil];
  17. [btn_right release];

再看一个例子:

UIButton *btnBack = [UIButton
buttonWithType:UIButtonTypeCustom];

btnBack.frame =
CGRectMake(0,
0, 23,
23);

btnBack.backgroundColor = [UIColor
clearColor];

[btnBack setImage:[UIImage
imageNamed:@"bar_back_nomal.png"]
forState:UIControlStateNormal];

[btnBack setImage:[UIImage
imageNamed:@"bar_back_selected.png"]
forState:UIControlStateHighlighted];

[btnBack setImage:[UIImage
imageNamed:@"bar_back_selected.png"]
forState:UIControlStateSelected];

[btnBack addTarget:self
action:@selector(btnBackClicked:)
forControlEvents:UIControlEventTouchUpInside];

[self.navigationItem
setLeftBarButtonItem:[[UIBarButtonItem
alloc]initWithCustomView:btnBack]];

UIButton * source = [UIButton
buttonWithType:UIButtonTypeCustom];

source.frame =
CGRectMake(0,
0, 35,
35);

source.backgroundColor = [UIColor
clearColor];

[source setImage:[UIImage
imageNamed:@"head_normal.png"]
forState:UIControlStateNormal];

[source setImage:[UIImage
imageNamed:@"head_press.png"]
forState:UIControlStateHighlighted];

[source setImage:[UIImage
imageNamed:@"head_press.png"]
forState:UIControlStateSelected];

[source addTarget:self
action:@selector(btnPublicNum:)
forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem * btn_right = [[UIBarButtonItem
alloc]initWithCustomView:source];

UIBarButtonItem * negativeSpacer = [[UIBarButtonItem
alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace
target:nil
action:nil];

negativeSpacer.width = -6;

self.navigationItem.rightBarButtonItems = [NSArray
arrayWithObjects:negativeSpacer, btn_right,
nil];

OK:左右边界一模一样

时间: 2024-10-14 02:13:29

调整导航条上leftBarButtonItem和rightBarButtonItem与屏幕边界的间距的相关文章

如何调整导航条上的leftBarButtonItem和rightBarButtonItem的位置

最近发现一些开发ios的新朋友在碰到调整导航条上leftBarButtonItem和rightBarButtonItem的位置的问题显得非常棘手 , 我上网查了下发现网上对这种问题的回答或者提出的解决方案并不是很好,而且很多的都是根本就无法达到自由调整左右按钮位置的.下面我以leftBarButtonItem为例: 设想这类问题的出处:(美女的诱惑) 自定义leftBarButtonItem和rightBarButtonItem 同时为了更好体现封装性新建一个分类来封装好button方法 然后我

MVC4商城项目三:分部视图在导航条上的应用

写了几天发觉大部分时间用在JS上了,本来想写个musicstore,却加了框架,然后又想用后台,然后又想用上bootstrapt,然后又想弄权限设计,然后又想………… 看来是想多了~ 好吧,最近把后台搭起来了,用了metronic.bootstrap, 真心很强大.功能很多,为了节约时间成本就在它上面改吧.先上图看看 框架演示地址:http://dreamsky.github.io/main/blog/metronic-bootstrap/index.html 下载地址:http://dream

【iOS开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条上的文字和按钮以及各种跳转

(1)navigationBar导航条可以看做是self.navigationController导航控制器的一个属性,可以直接用点来表示self.navigationController.navigationBar,当然navigationBar自己还有很多属性,比如样式barStyle.背景backgroundColor.frame属性(可以获取宽高这些信息),还可以用setBackgroundImage方法设置背景图片,当然图片多了可以使用clipsToBounds剪裁. (2)但,nav

自定义导航条上的标题文字的大小以及颜色

在做项目开发时,有的时候回自定义导航条视图,常见的是设置标题文字的大小颜色.左侧以及右侧navgationItem. 在做自定义导航视图的时候 ,导航项都可以用自定义视图的形式自定义. 自定义导航条标题的时候有两种方法:一是,采用自定义视图的方式:二是,采用系统的方法. 采用自定义视图view的方式 就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了. UILabel *titleLabel = [[UILabel allo

iOS中的导航条(UISegmentedControl)的基本使用(界面中传值的3中方法)

Appdelegate中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; //1.创建单视图控制器对象, FirstViewControll

导航条NavigationControl的一些属性设置

/** * 配置公共的属性,该属性作用于所有的导航条界面; */ - (void)configureConmmonPropety { //1.设置导航条的颜色 self.navigationController.navigationBar.barTintColor = [UIColor yellowColor]; //2.关闭导航条的毛玻璃效果. self.navigationController.navigationBar.translucent = NO; //3.隐藏导航条 self.na

Bootstarp学习(十一)导航条

导航条基础 导航条(navbar)和上一节介绍的导航(nav),就相差一个字,多了一个"条"字.其实在Bootstrap框架中他们还是明显的区别.在导航条(navbar)中有一个背景色.而且导航条可以是纯链接(类似导航),也可以是表单,还有就是表单和导航一起结合等多种形式.在这一节中将一起探讨Bootstrap框架中导航条的使用. 导航条和导航一样,在Bootstrap框架中是一个独立组件,所以你也可以根据自己的需求使用不同的版本: LESS版本:对应的源文件navbar.less S

导航条的自定义:背景颜色设置,按钮标题图片设置,图片坐标修改

一.修改系统原生导航条 修改导航条背景颜色 self.navigationController.navigationBar.barTintColor = [UIColor colorWithHexString:@"#2295f2"]; 自定义导航条按钮 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"btn-menu-h&q

导航条、状态条高亮状态改变

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch