ios6中
  ios7中
上面两个图分别是在ios6和ios7环境下,UIBarButtonItem的情况。
这里所有的UIBarButtonItem都用了
- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action;
方法进行初始化代码如下- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
        
        
        
        UIBarButtonItem *fixedSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil ];
        fixedSpace.width = 5.0f;
        UIBarButtonItem *fixibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil ];
        
        UIBarButtonItem *stop = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemStop target:nil action:nil];
        
        UIBarButtonItem *action = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:nil action:nil];
        
        UIBarButtonItem *compose = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCompose target:nil action:nil];
        
        
        NSArray *items = [NSArray arrayWithObjects:
                          fixibleSpace,
                          stop,
                          fixibleSpace,
                          action,
                          fixibleSpace,
                          compose,
                          nil];
        UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0.0f, 220, 44.0f)];
        
        toolBar.backgroundColor = [UIColor blackColor];
        
        [toolBar setItems:items];
        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:toolBar];    }
    return self;
}
如果UIBarButtonItem用以下方法初始化
- (id)initWithImage:(UIImage *)image style:(UIBarButtonItemStyle)style target:(id)target action:(SEL)action;
那么,只要设置UIBarButtonItem的width属性,就可以调整过来来。
但是用
- (id)initWithBarButtonSystemItem:(UIBarButtonSystemItem)systemItem target:(id)target action:(SEL)action;
方法初始化,是无法对width属性进行设置的。请教下大神,除了改用UIImage初始化之外,如何解决这个偏移的问题。

解决方案 »

  1.   

    动态控制,看看是ios6以下,还是ios7以上,ios6以下默认的导航条是44,而ios7以上默认的导航条是64
    另外你试试这个方法建立UIBarButtonItem
       UIImage*image1 = [UIImage imageNamed:@"toubuanniu1.png"];
        UIButton*buttonback = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 20, 20)];
        [buttonback setBackgroundImage:image1 forState:UIControlStateNormal];
        [buttonback addTarget:self action:@selector(vip) forControlEvents:UIControlEventTouchUpInside];
        
        UIBarButtonItem*rightButton = [[UIBarButtonItem alloc] initWithCustomView:buttonback];
        self.navigationItem.rightBarButtonItem = rightButton;