这两天在自定义backbarButtonItem的操作上遇到很多问题,
刚开始是想给backbarButtonItem替换掉系统的图片,由于直接修改无效,只能先创建一个UIBarButtonItem,然后
赋值给self.navigationItem.backbarButtonItem。 UIBarButtonItem* back = [[UIBarButtonItem alloc] init];
back.style = UIBarButtonItemStyleBordered;
back.image = [UIImage imageNamed:@"back"];
back.title = @"xxx";
self.navigationItem.backBarButtonItem = back;
[back release];然后发现,image改的是Button的内容图片,不是背景图片。
于是改为: [back setBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 此操作无效,也不知道改了什么东西了,反正按钮的样式还是系统样式。再改为: [back setBackButtonBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
有效果了,可是,尼玛, 为什么按钮上的文字多了一个阴影背景呢? 把文字去掉看看……
妈的,文字还在,只是从"xxx"还原成了系统的"Back"。之后试了无数种方法,始终没能把文字给去掉。
想问问各位大神,能否去掉文字以及他的背景阴影?后来又尝试过用自定义的Button,在设置给backbarButtonItem的view属性,发现它直接就不显示了。
但是,如果这个按钮作为navigationItem的 左边按钮或右边按钮,都是可以显示的:
self.navigationItem.leftBarButtonItem = back; 这个是可以的,按钮效果也是我想要的,但是他没有backbarButtonItem的功能啊。不知道哪位大神可以帮我看看这个问题?
刚开始是想给backbarButtonItem替换掉系统的图片,由于直接修改无效,只能先创建一个UIBarButtonItem,然后
赋值给self.navigationItem.backbarButtonItem。 UIBarButtonItem* back = [[UIBarButtonItem alloc] init];
back.style = UIBarButtonItemStyleBordered;
back.image = [UIImage imageNamed:@"back"];
back.title = @"xxx";
self.navigationItem.backBarButtonItem = back;
[back release];然后发现,image改的是Button的内容图片,不是背景图片。
于是改为: [back setBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 此操作无效,也不知道改了什么东西了,反正按钮的样式还是系统样式。再改为: [back setBackButtonBackgroundImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
有效果了,可是,尼玛, 为什么按钮上的文字多了一个阴影背景呢? 把文字去掉看看……
妈的,文字还在,只是从"xxx"还原成了系统的"Back"。之后试了无数种方法,始终没能把文字给去掉。
想问问各位大神,能否去掉文字以及他的背景阴影?后来又尝试过用自定义的Button,在设置给backbarButtonItem的view属性,发现它直接就不显示了。
但是,如果这个按钮作为navigationItem的 左边按钮或右边按钮,都是可以显示的:
self.navigationItem.leftBarButtonItem = back; 这个是可以的,按钮效果也是我想要的,但是他没有backbarButtonItem的功能啊。不知道哪位大神可以帮我看看这个问题?
方法2: 用navigation的leftbar,然后push pop controller就行了, 怎么会没有back的功能呢
方法2是可以的,但是这样的话,每个被push的界面,都要自定义leftbar不说,
关键是,leftbar与backbar有点区别,就是,在返回的时候,backbar有个一个平移动画+渐变动画,
leftbar只有渐变动画。目前看来,我也只能用方法2的了。
[button setFrame:CGRectMake(0, 0, 60, 44)];
[button setBackgroundImage:[UIImage imageNamed:@"bt_back.png"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"bt_back_over.png"] forState:UIControlStateHighlighted];
self.leftBtnBackItem =[[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];