这两天在自定义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的功能啊。不知道哪位大神可以帮我看看这个问题?

解决方案 »

  1.   

    只是个导航栏而已,一个UIView,上面加两个按钮,label,并不复杂
      

  2.   

    参考:http://stackoverflow.com/questions/3093468/customize-uibarbuttonitem-with-background-images
      

  3.   

    方法1:  直接把文字帖到图片上
    方法2: 用navigation的leftbar,然后push pop controller就行了, 怎么会没有back的功能呢
      

  4.   


    方法2是可以的,但是这样的话,每个被push的界面,都要自定义leftbar不说,
    关键是,leftbar与backbar有点区别,就是,在返回的时候,backbar有个一个平移动画+渐变动画,
    leftbar只有渐变动画。目前看来,我也只能用方法2的了。
      

  5.   

     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];
      

  6.   

    用leftBtnBackItem, 然后给这个按钮加个事件,在事件里返回