这两天在自定义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的功能啊。
不知道哪位大神可以帮我看看这个问题?
------解决方案--------------------
深度定制最简单的办法就是隐藏系统导航栏,完全自己实现。
------解决方案--------------------
只是个导航栏而已,一个UIView,上面加两个按钮,label,并不复杂
------解决方案--------------------
参考:http://stackoverflow.com/questions/3093468/customize-uibarbuttonitem-with-background-images
------解决方案--------------------
方法1: 直接把文字帖到图片上
方法2: 用navigation的leftbar,然后push pop controller就行了, 怎么会没有back的功能呢
------解决方案--------------------
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
[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];
------解决方案--------------------
用leftBtnBackItem, 然后给这个按钮加个事件,在事件里返回